我试图重写搜索结果页面URL到/search/query-1.html ,但当我尝试搜索一个具有斜杠的关键字“/ “或”#“(例如A/D)它会返回一个404错误。mod_rewrite搜索功能,斜杠问题(404错误)
我的.htaccess有以下几点:
RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]
可以采取什么问题吗?
谢谢。
我试图重写搜索结果页面URL到/search/query-1.html ,但当我尝试搜索一个具有斜杠的关键字“/ “或”#“(例如A/D)它会返回一个404错误。mod_rewrite搜索功能,斜杠问题(404错误)
我的.htaccess有以下几点:
RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]
可以采取什么问题吗?
谢谢。
如果你想要像你在评论中提到阿帕奇接受编码的斜线,你必须使用AllowEncodedSlashes
directive,使其能够在您的服务器配置:
AllowEncodedSlashes on
您可能没有现在这个启用,并且这种情况下的默认行为是Apache使用404响应拒绝请求。您只能在服务器或虚拟主机上下文中指定此指令,因此根据您的环境,您可能无法更改此指令。就编码的散列符号而言,它不应该有任何问题处理。
但是,它是可能是散列插入到解码的查询字符串中,这可能会导致一些问题。如果发现是这种情况,你的Apache安装足够新,你应该B
flag添加到您的RewriteRule
以确保反向引用适当转义:
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [B,L]
B标志是我需要什么,我可以操纵GET请求使用PHP ..谢谢:) – slimb 2011-03-06 18:17:29
请出示不起作用 – 2011-02-26 19:33:32
一个例子网址嗨,这一个作品http://localhost/search/test/abc-1.html和这一个没有(网址编码查询):http://localhost/search/test%2Fabc-1.html – slimb 2011-02-26 20:36:42