我正在尝试将搜索结果页面网址重写为/search/query-1.html 但是当我尝试搜索具有斜杠“/”或“#”的关键字时(例如A / D),它会返回404错误。
我的.htaccess有以下内容:
RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]
可能是什么问题?
感谢。
答案 0 :(得分:2)
如果您希望Apache接受评论中提到的编码斜杠,则必须使用AllowEncodedSlashes
directive在服务器配置中启用它:
AllowEncodedSlashes on
您现在可能没有启用此功能,在这种情况下,默认行为是Apache拒绝带有404响应的请求。您只能在服务器或虚拟主机上下文中指定此指令,因此根据您的环境,您可能无法更改此指令。就编码的哈希符号而言,处理它时不应该有任何问题。
但是, 可能是哈希被插入到解码的查询字符串中,这可能会导致一些问题。如果您发现情况确实如此,并且您的Apache安装足够新,则应将B
flag添加到RewriteRule
以确保适当地转义反向引用:
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [B,L]