0

我正在开发一个网站,我正在尝试重写 URL 以使它们看起来更漂亮并更易于访问。

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

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

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

首先,这与我尝试过的所有内容都完美匹配,除了一个 URL,我还不太清楚为什么。

有问题的 URL 是:https ://domain.com/name/albums/album%3B.%2F

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

如果您想知道 URL 的最后一部分是从“album;./”编码的...

如果您对如何解决此错误有任何建议,请告诉我。感谢您提前回复。

4

1 回答 1

1

尝试在您的规则中添加一个 NE 标志,以便%3B.%2F不会在查询字符串中重新编码为%253B.%252F

RewriteRule ^(/(/[^/]*/?)?)?([^/]+[a-zA-Z0-9])/(albums)/(.*)$ /name.php?name=$3&page=photos&album=$5 [L,NE]
于 2012-10-23T23:18:25.503 回答