.htaccess重写不适用于所有网址

时间:2012-10-23 14:51:06

标签: php .htaccess url mod-rewrite url-rewriting

我正在开发一个网站,我正在尝试重写网址,以使其更好看,并使其更易于访问。

首先,在PHP中,我使用rawurlencode和rawurldecode来清理URL。

接下来,在我的.htaccess文件中,这是我正在使用的RewriteRule:

RewriteRule ^(/(/[^/]*/?)?)?([^/]+[a-zA-Z0-9])/(albums)/(.*)$ /name.php?name=$3&page=photos&album=$5 [L]

首先,除了一个URL之外,这与我尝试的所有内容完美匹配,我还不确定为什么。

相关网址为:https://domain.com/name/albums/album%3B.%2F

现在我在.htaccess中设置了一个ErrorDocument,它甚至没有进入该文档,它通常会这样做。 404错误将发送到我的域主机正常错误页面。我试图弄清楚为什么这不起作用,因为URL已被清理,所以我不确定会导致这个问题。

如果您想知道网址的最后一部分是从“相册; ./”编码的......

如果您对如何修复此错误有任何建议,请告知我们。我提前感谢任何回复。

1 个答案:

答案 0 :(得分:1)

尝试在规则中添加网址标记,以便%3B.%2F不会在查询字符串中重新编码为%253B.%252F

RewriteRule ^(/(/[^/]*/?)?)?([^/]+[a-zA-Z0-9])/(albums)/(.*)$ /name.php?name=$3&page=photos&album=$5 [L,NE]
相关问题