Frage

Hier ist meine .htaccess -Datei

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule subpage\?sid /index.php [R=301,L,NC]

Meine Anfrage ist http://example.com/subpage?sid

Es kehrt immer wieder 404 zurück, anstatt auf index.php umzuleiten

Ich habe versucht, dem nicht zu entkommen? und ändern die Anfrage an http://example.com/subpage\?sid

Ich habe viele Dinge ausprobiert, um dies zum Laufen zu bringen, bin aber jetzt verblüfft.

War es hilfreich?

Lösung

Der Query_String ist nicht Teil des URI. Aus der Dokumentation für Neu wrichen:

Hinweis: Abfragezeichenfolge

Das Muster wird nicht gegen die Abfragezeichenfolge abgestimmt. Stattdessen müssen Sie eine Umschreibe mit dem verwenden %{QUERY_STRING} Variable.

Wie der Dokument sagt, müssen Sie eine Rewritecond verwenden, so etwas wie:

RewriteCond %{QUERY_STRING} (^|&)sid([&=]|$) [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

Wenn %{query_string} wirklich keine Option ist, versuchen Sie es mit:

# Apache is supposed to use PCRE, but doesn't seem to like "\\s"
RewriteCond %{THE_REQUEST} subpage?sid[^!-~] [NC]
RewriteRule ^/?subpage /index.php [R=301,L,NC]

Außerdem brauchen Sie fast nie RewriteBase, wie Sie es verwenden ("Rewritebase /"). Kommentieren Sie die Zeile und testen Sie sie, um sicher zu sein, aber Sie werden wahrscheinlich feststellen, dass Sie sie ohne krankhafte Auswirkungen löschen können.

Andere Tipps

Vielleicht müssen Sie die VirtualHost -Einstellung für Ihre Website überprüfen und die Einstellung für die Erlaubnis für das entsprechende Verzeichnis festlegen?

<Directory /var/www/vhosts/some_host>
     ....
     AllowOverride All
</Directory>

Hier ist mehr über Apache's ALLGESTELLT

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top