有一个现有站点具有平面文件结构,其中包含大量带有大量查询字符串的 URL。我的问题是我编写了一个 CMS 并设置了一个使用查询字符串的自定义错误代码页,例如:
ErrorDocument 404 /error.php?errorcode=404
这个问题是如果旧的损坏的 url 有一个查询字符串,这会覆盖 errordocument redirct 中的查询字符串。例如,如果你这样做
www.example.com/missingpage.php - this will work and redirect to the 404 without issue.
但如果你这样做
www.example.com/missingpage.php?anything=anything
甚至
www.example.com/missingpage.php?
errorcode=404 查询字符串不会进入 php 页面,当错误代码不匹配时,它会抛出我设置的通用消息。问题是有很多链接包含各种疯狂的查询字符串,因此很难单独过滤掉它们。
有没有人遇到过这个问题?
最佳答案
您可以做的其他事情是使用 mod_rewrite 并附加查询字符串。我以前在其他设置上看到过这样做,因为 ErrorDocument
目标通过 URL 映射引擎(至少在 apache 2.4 中)被放回。
例如:
ErrorDocument 404 /error-doc-404
ErrorDocument 405 /error-doc-405
ErrorDocument 500 /error-doc-500
然后你有这个:
RewriteEngine On
RewriteRule ^error-doc-([0-9]{3})$ /error.php?errorcode=$1 [L]
这样,地址栏上的 url 就不会改变。
关于php - 查询字符串的 htaccess 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10867742/