Mod Rewrite无法按预期工作

时间:2013-05-20 18:01:23

标签: apache .htaccess

编辑:

感谢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 = tatata

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

那么是什么导致这种行为。我猜我错过了重写函数的方法。

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

将您的规则替换为:

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

在正则表达式中连字符需要在方括号中为第一个或最后一个,否则用于范围表示