如果我的q=
参数中有问号,则.htaccess
会将我重定向到404错误页面。
这是我的.htaccess重写规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/(.*)/(.*)/(.*)$ results.php?q=$1&start=$2&type=$3 [L,QSA]
有人知道如何在get参数中允许问号吗?
答案 0 :(得分:1)
请尝试使用此功能。它将处理search/
的所有请求。从三个路径 - 如您的示例所示 - 到一条路径:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/search/([a-z0-9]+)/?([^/]*)$ /results.php?q=$1&$2 [QSA]
RewriteRule ^/search/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)/?$ /results.php?q=$1&start=$2&type=$3 [L]
RewriteRule ^/search/([a-z0-9]+)/([a-z0-9]+)/?$ /results.php?q=$1&start=$2 [L]
RewriteRule ^/search/([a-z0-9]+)/?$ /results.php?q=$1 [L]
或者在网址前面没有/
的情况下尝试此操作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/([a-z0-9]+)/?([^/]*)$ results.php?q=$1&$2 [QSA]
RewriteRule ^search/([a-z0-9]+)/([a-z0-9]+)/([a-z0-9]+)/?$ results.php?q=$1&start=$2&type=$3 [L]
RewriteRule ^search/([a-z0-9]+)/([a-z0-9]+)/?$ results.php?q=$1&start=$2 [L]
RewriteRule ^search/([a-z0-9]+)/?$ results.php?q=$1 [L]
第二个适用于我当地的MAMP设置。如果我创建一个results.php
,其内容为:
<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>
然后加载以下网址;我根据你的评论说明你的/search/google/0/web
错误:
http://localhost:8888/search/google/0/web
这是我在浏览器中得到的结果:
Array
(
[q] => google
[start] => 0
[type] => web
)