1

我正在尝试将搜索结果页面 url 重写为 /search/query-1.html 之类的内容,但是当我尝试搜索带有斜杠“/”或“#”的关键字时 ..(例如 A/D)它返回404 错误。

我的 .htaccess 有以下内容:

RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]

可能是什么问题?

谢谢。

4

1 回答 1

2

如果您希望 Apache 接受您在评论中提到的编码斜杠,您必须使用AllowEncodedSlashes指令在您的服务器配置中启用它:

AllowEncodedSlashes on

您现在可能没有启用此功能,这种情况下的默认行为是 Apache 以 404 响应拒绝请求。您只能在服务器或虚拟主机上下文中指定此指令,因此根据您的环境,您可能无法更改它。就编码的哈希符号而言,处理它应该没有任何问题。

但是,哈希可能被插入到解码后的查询字符串中,这可能会导致一些问题。如果您发现是这种情况并且您的 Apache 安装足够新,您应该将B标志添加到您的RewriteRule以确保反向引用被适当地转义:

RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [B,L]
于 2011-03-06T04:51:16.387 回答