我在使用MySQL的Apache服务器(1.3.33)上使用PHP(5.2.14),并且我们的.htaccess文件产生的漂亮网址出现了问题。例如,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配置规则?
答案 0 :(得分:0)
据我所知,方括号中的字符未被转义 - 请尝试使用[a-zA-Z0-9_-]
。连字符应该是最后一个字符,否则解析器会尝试将其视为范围的一部分(例如a-z
)。