【问题标题】:Dashes In the Url Causing 404 ErrorURL 中的破折号导致 404 错误
【发布时间】:2011-01-25 21:11:38
【问题描述】:

我正在使用 MySQL 的 Apache 服务器 (1.3.33) 上的 PHP (5.2.14) 工作,我们的 .htaccess 文件生成的漂亮 url 出现了问题。例如,www.example.com/pages/page 将工作,而 www.example.com/page/this-other-page 突然不再工作。如果我输入下划线,则 404 消失,但页面 uri 以破折号存储在数据库中,因此它返回“找不到页面”CMS 错误。

以下是划线中的重写规则。

RewriteRule ^([a-zA-Z0-9\-\_]+)/([a-zA-Z0-9\-\_]+)/?$ page.php?module=$1&uri=$2 [L]
RewriteRule ^([a-zA-Z0-9\-\_]+)/([a-zA-Z0-9\-\_]+)/([a-zA-Z0-9\-\_]+)/?$ page.php?module=$1&uri=$2&sec_uri=$3 [L]
RewriteRule ^([a-zA-Z0-9\-\_]+)/([a-zA-Z0-9\-\_]+)/([a-zA-Z0-9\-\_]+)/([a-zA-Z0-9\-\_]+)/?$ page.php?module=$1&uri=$2&sec_uri=$3&tri_uri=$4 [L]

我怀疑服务器上有一些不喜欢破折号的配置规则,但它不在我们的服务器上。客户在其他地方托管,他们的服务器管理员根本没有帮助。

或者是否有可能修复它的 php 配置规则?

【问题讨论】:

  • 可能是您的 CMS 不喜欢网址中的破折号。

标签: php apache .htaccess configuration


【解决方案1】:

据我所知,方括号中的字符不会被转义 - 请尝试改用 [a-zA-Z0-9_-]。连字符应该是最后一个字符,否则解析器会尝试将其视为范围的一部分(例如a-z)。

【讨论】:

  • 这完全修复了它。非常感谢!
猜你喜欢
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 2018-10-31
  • 2011-08-30
  • 2017-08-31
  • 2014-05-14
  • 1970-01-01
相关资源
最近更新 更多