我正在尝试发送如下所示的查询:
example.org/search?q=search+query
到
search.pl?q=search+query
以及对index.php的所有其他请求,这就是我的htaccess的样子(不工作)
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]
由于某种原因,这将我发送到索引。
答案 0 :(得分:1)
查询字符串不是RewriteRule中评估内容的一部分,因此您需要从RewriteRule中的匹配条件中删除它,如下所示:
RewriteRule ^/?search$ /cgi-bin/search.pl [L,QSA]
请注意,您不需要在重定向中使用反向引用($1
),因为QSA
标志会将现有查询字符串按原样附加到URI。