【问题标题】:.htaccess rewrite not working for all URL's.htaccess 重写不适用于所有 URL
【发布时间】:2012-10-23 14:51:05
【问题描述】:

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

首先,在 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 已经过清理,所以我不确定是什么导致了这个问题。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 不幸的是,这对我不起作用。还有其他建议吗?
    猜你喜欢
    • 1970-01-01
    • 2016-01-02
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多