0

我很少遇到这个问题,而且只在某些主机上。这是我的自定义框架的 .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 正则表达式中的字符类吗?

谢谢

4

1 回答 1

1

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

  1. 尝试用[\w-]显式替换[a-zA-Z0-9_-]
  2. 尝试替换[\w-][^/]
于 2013-06-15T21:37:17.383 回答