Wenn die Direktive in Apache VirtualHost conf nicht funktioniert, wird "Ungültiger Befehl" angezeigt.

7

Warum??

<VirtualHost *:80>
        ServerAdmin [email protected]
        DirectoryIndex index.php
        <If "%{SERVER_PROTOCOL} != 'HTTPS'">
            Redirect / https://www.mydomain.com:443/
        </If>
.....
</VirtualHost>

Speichern und dann neu starten:

sudo /etc/init.d/apache2 restart
Syntax error on line 4 of /etc/apache2/sites-enabled/000-default:
Invalid command '<If', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
   ...fail!
NotGaeL
quelle

Antworten:

4

"If" versteht Apache nicht (vor Version 2.3). Sie sollten sich wahrscheinlich mod_rewrite ansehen

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://example.com:443/$1 [R,L]

Um Ihre Apache-Version zu finden, können Sie wahrscheinlich Folgendes verwenden: apache2 -v

TheCompWiz
quelle
Bist du sicher? Die Dokumentation sagt etwas anderes, es schlägt sogar vor, es über Rewrite zu verwenden: httpd.apache.org/docs/2.3/rewrite/remapping.html#canonicalhost
NotGaeL
3
<Wenn> stammt aus Apache2.3. Ich vermute, Sie verwenden 2.2. httpd.apache.org/docs/2.2/rewrite/remapping.html#canonicalhost
Mark Wagner
Übrigens ein kleines Detail: Die RewriteCond sollte ausgeschaltet sein (ohne =) nicht! = Ein, sonst erhalten Sie den Fehler RewriteCond Bad Delimiters. Versucht zu bearbeiten, aber etwas passiert mit Serverfehler, es lässt mich nicht. Bitte machen Sie es selbst, wenn Sie nichts dagegen haben, damit die Lösung für andere korrigiert bleibt.
Nochmals vielen
1
Erledigt. Obwohl ich glaube! = Ist völlig gültig. Ich muss es noch einmal überprüfen.
TheCompWiz
1
zurückgesetzt. : D
TheCompWiz