2010-10-27 3 views
5

Je souhaite créer une copie statique d'un site en conservant les URL existantes. Le problème est que les URL ressemblaient:apache, autorisez les noms de fichiers avec '?'

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

et Apache ne veut pas trouver le fichier "index.php id = XXX?". Au lieu de cela, il interprète la requête comme le fichier "index.php" avec la requête "id = XXX". Comment puis-je demander à Apache de cesser de gérer le point d'interrogation?


Enfin, ma solution:

1) renommer les fichiers "index.php id = XXX?" À "index.php_id = XXX"

2) Ajouter à .htaccess:

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

Répondre

5

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

Si vous répertoriez le fichier dans un répertoire contenant des index, Apache génère correctement les liens de ce format. Vous devez cependant réécrire les liens dans les pages existantes.

Questions connexes