有些主机不喜欢 .htaccess 正则表达式中的字符类?



我很少遇到这个问题,只是在一些主机上。下面是我自定义框架的。htaccess:

Options -Indexes
ErrorDocument 403 /application/views/403.htm
ErrorDocument 404 /application/views/404.htm
RewriteEngine on
RewriteRule ^index.php$ index.php [L]
.
.
.
RewriteRule ^([w-]+)/([w-]+)/(.+)$ index.php?q_controller=$1&rq_action=$2&rq_param=$3 [L]
RewriteRule ^([w-]+)/([w-]+)$ index.php?rq_controller=$1&rq_action=$2 [L]
RewriteRule ^([w-]+)/?$ index.php?rq_controller=$1 [L]

定义控制器、视图和参数的最后3行在某些主机上不起作用,其余的都工作得很好,所以mod_rewrite显然是启用的。如果我把它们改成这样,它就可以工作了,但这不是我需要的:

RewriteRule ^(.+)/(.+)/(.+)$ index.php?rq_controller=$1&rq_action=$2&rq_param=$3 [L]
RewriteRule ^(.+)/(.+)$ index.php?rq_controller=$1&rq_action=$2 [L]
RewriteRule ^(.+)/?$ index.php?rq_controller=$1 [L]

任何想法?这些主机不支持。htaccess正则表达式中的字符类吗?

谢谢

我不是url重写的专家,但你可以尝试两件事:

  1. 尝试用显式[a-zA-Z0-9_-]替换[w-]
  2. 尝试用[^/]代替[w-]

相关内容

  • 没有找到相关文章

最新更新