2010-10-27 9 views
5

Ich möchte eine statische Kopie einer Website unter Beibehaltung bestehender URLs erstellen. Das Problem ist, dass die URLs sah aus wie:Apache, erlauben Dateinamen mit '?'

http://mysite/index.php?id=XXX

und Apache will nicht die Datei "index.php id = XXX?" Finden. Stattdessen interpretiert es die Anfrage als die Datei "index.php" mit der Abfrage "id = XXX".

Wie kann ich Apache bitten, das Fragezeichen nicht mehr zu bearbeiten?


Schließlich meine Lösung:

1) benennen Sie die Dateien aus "index.php id = XXX?" Bis "index.php_id = XXX"

2) in .htaccess hinzufügen:

RewriteEngine On 
RewriteCond %{ENV:REDIRECT_STATUS} ="" 
RewriteCond %{QUERY_STRING} !="" 
RewriteRule ^(.*)$ $1_%{QUERY_STRING} [L] 

Antwort

5

Escape die ? als %3f: http://www.example.com/index.php%3fid=XXX.

Wenn Sie die Datei in einem Verzeichnis auflisten, für das Indizes aktiviert sind, generiert Apache korrekt Links dieses Formats. Sie müssen jedoch die Links in den vorhandenen Seiten neu schreiben.