Mod Rewrite未按预期工作



编辑:

感谢Anubhava,以下是htaccess中的重写:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([w_|-]+)$ main.php?u=$1 [L,QSA]

它的作用:它占用mysite.com/tatata并将其发送到main.php?u=塔塔

这很好用。然而,当我尝试使用mysite.com/cc时,它会给我403个禁止的错误。我试着看看是否有一些隐藏的.cc文件夹,不,我的网站中没有/cc。我试过了,/a和/aa,因为我认为我可能把重写搞砸了,至少需要3个字母。这两个都重写正确。

那么是什么导致了这种行为呢。我想我在重写函数的方式上遗漏了一些东西。

-----编辑更多----

为了看看会发生什么,我补充道:

RewriteRule ^([w_|-]+)/$ main.php?u=$1 [L,QSA]

现在它使用/admin/(一个实际的目录(并输出/main.php?u=管理员但是使用/cc/或/cc。。。仍然是同样的问题。

这种情况发生在由两个不同的人设置的两台机器上。

将您的规则替换为:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([w_|-]+)$ main.php?u=$1 [L,QSA]

在正则表达式中,连字符必须是方括号中的第一个或最后一个,否则它将用于范围表示

最新更新