0

我正在尝试发送如下所示的查询:

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]

由于某种原因,这将我发送到索引。

4

1 回答 1

1

查询字符串不是 RewriteRule 中评估内容的一部分,因此您需要将其从 RewriteRule 中的匹配条件中删除,如下所示:

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

请注意,您不需要$1在重定向中使用反向引用 ( ),因为该QSA标志会将现有查询字符串按原样附加到 URI。

于 2013-05-08T00:04:27.447 回答