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


7

Warum??

<VirtualHost *:80>
        ServerAdmin admin@mydomain.com
        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!

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.