Frage Wenn Direktive nicht in Apache VirtualHost conf funktioniert, sagt "Ungültiger Befehl"


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!

6
2017-12-14 18:21


Ursprung




Antworten:


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

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


4
2017-12-14 18:27



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
<If> stammt von apache2.3. Ich vermute, du benutzt 2.2. httpd.apache.org/docs/2.2/rewrite/remapping.html#canonicalhost - Mark Wagner
Du hast Recht, ich bin dumm. Vielen Dank :) - NotGaeL
Erledigt. Obwohl ich glaube! = Ist absolut gültig. Ich muss es nochmal überprüfen. - TheCompWiz
zurückgekehrt. : D - TheCompWiz