如果我在我的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参数中使用问号吗?
试试用这个代替。它将处理对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]
或者尝试在url前面不使用/
:
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>';
?>
然后加载以下URL;这是基于你的评论,说你得到了一个错误与/search/google/0/web
:
http://localhost:8888/search/google/0/web
这是我在浏览器中得到的结果:
Array
(
[q] => google
[start] => 0
[type] => web
)