Warum ist Apache Permanent Redirect entfernen der slash zwischen domain und Pfad?

Ich bin mit Apache 2.4, und habe ich zwei virtuelle Verzeichnisse. Eine SSL erfordert, und der andere leitet es.

Wenn ein Benutzer versucht, besuchen https://www.derp.com/derp ohne /derp vorhanden, Sie korrekt ein 404. Aber wenn ein Benutzer besucht http://www.derp.com/derp Apache falsch leitet den Benutzer zu https://www.derp.comderp entfernen des slash zwischen Pfad und der domain-name.

Ich habe keine Ahnung, was wäre die Ursache sein.

Im folgenden ist der setup der Virtuellen Hosts.

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName www.derp.com
    ServerAlias derp.com
    DocumentRoot "C:\Users\derp\Documents\Web Projects\derp"
    SSLEngine on
    SSLCertificateFile "C:\Apache24\certs\cert.cer"
    SSLCertificateKeyFile "C:\Apache24\certs\key.key"
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.derp.com
    ServerAlias derp.com
    Redirect permanent /https://www.derp.com/
</VirtualHost>

<Directory "C:\Users\derp\Documents\Web Projects\derp">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    SSLRequireSSL
</Directory>

Warum sollte Apache benimmt man sich so?

Bonus-Frage: Sollten Weiterleitungen behandelt werden in meiner virtuellen host-definition benutzen, oder sollte Sie abgewickelt werden .htaccess-Datei in der web-site der physischen Verzeichnis?


Edit:

Fange ich ein Laravel Projekt, und standardmäßig werden öffentliche Ordner enthält .htaccess-Datei, also hier ist, dass guy:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Edit Zwei:

Habe ich versucht:

  • hinzufügen von einem Schrägstrich am Ende der DirectoryRoot Pfad
  • ersetzt backslashes durch forward slashes in der DirectoryRoot Pfad
  • ersetzt backslashes durch doppelte umgekehrte Schrägstriche in die DirectoryRoot Pfad

Ich auch entfernt .htaccess-Datei aus dem Verzeichnis komplett.

Leitet es korrekt, wenn man von http://www.derp.com zu https://www.derp.com. Es ist nur, wenn Sie einen Pfad angeben und versuchen, https, dass es entfernt den slash zwischen domain und Pfad.


Edit Drei:

Ich auch versucht, den folgenden Vorschlag:

Redirect permanent /https://www.derp.com/

Try

RedirectMatch permanent /(.*) https://www.derp.com/$1

or

RedirectMatch permanent (.*) https://www.derp.com/$1

... und statt der Umleitung zu https://www.derp.comderp, es stattdessen nicht umleiten, versuche und gibt einen 404 für http://www.derp.com/derp, aber mit Apache ' s 404, statt zu werfen Nicht Gefunden Ausnahme, wie Laravel funktioniert ohne Konfiguration.


Edit Vier:

Habe ich auch schon versucht:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

In der .htaccess-Datei und das Verhalten nicht ändern werden.

Schreibe einen Kommentar