我很少遇到这个问题,只是在一些主机上。下面是我自定义框架的。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重写的专家,但你可以尝试两件事:
- 尝试用显式
[a-zA-Z0-9_-]
替换[w-]
- 尝试用
[^/]
代替[w-]