php - 查询字符串的 htaccess 问题

标签 php apache .htaccess

有一个现有站点具有平面文件结构,其中包含大量带有大量查询字符串的 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/

相关文章:

php - file_put_contents - 无法打开流 : Permission denied

使用 Symfony 开发模式执行并发请求时 Apache 崩溃

php - 存储过程将来自不同调用的结果混合到临时表中

.htaccess - 将访问者重定向到网站的几个网址的正在 build 中的页面

php - 尾部斜杠导致 404,我可以使用 htaccess 修复吗?

php - 如何修复 PHP : "A non well formed numeric value encountered" 中的此错误

php - 查询不能在 PHP 中运行,但可以直接在 MySQL 中运行

php - Facebook PHP SDK - 需要在特定帐户上登录

ruby-on-rails - 看起来 Bundler 找不到 gem 。也许您没有安装该应用程序所需的所有 gem

.htaccess - .htaccess 文件中的变量