编辑:
感谢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 ......仍然是同样的问题。
情况发生在两台机器上,由两个不同的人设置。
答案 0 :(得分:0)
将您的规则替换为:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([\w_|-]+)$ main.php?u=$1 [L,QSA]
在正则表达式中连字符需要在方括号中为第一个或最后一个,否则用于范围表示。