2013-05-07 3 views
0

Je suis en train d'envoyer des requêtes qui ressemblent à ceci:ont besoin aider la réécriture d'URL avec htaccess

example.org/search?q=search+query 

à

search.pl?q=search+query 

et toutes les autres demandes de index.php, voici comment mon htaccess ressemble (ne fonctionne pas)

RewriteEngine on 
RewriteRule ^search\?q\=(.*)$ /cgi-bin/search.pl?q=$1 [L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

Cela me renvoie à l'index pour une raison quelconque.

Répondre

1

La chaîne de requête ne fait pas partie de ce qui est évalué dans un RewriteRule, vous devez supprimer que de la condition de match dans le RewriteRule comme ceci:

RewriteRule ^/?search$ /cgi-bin/search.pl [L,QSA] 

Notez que vous n'avez pas besoin d'utiliser un backreference ($1) dans la redirection car l'indicateur QSA ajoute la chaîne de requête existante à l'URI telle quelle.

+0

cela a fonctionné merci! – user2348668