0

编辑:

感谢 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 ...仍然是同样的问题。

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

4

1 回答 1

0

将您的规则替换为:

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

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

于 2013-05-20T18:08:45.080 回答