与文件夹匹配的Apache重写模块的优先级



Vhost配置:

   <VirtualHost *:80>
    ServerAdmin XXX@XXX.com
    ServerAlias  *.cccc.net
    ServerName   lolololololol.cccc.net
    DirectoryIndex index.html index.php index.htm
    DocumentRoot /home/someuserblabla/ccccnet
    #Rewrite abc.cccc.net to ./abc (folder). (hidden rewrite, without redirect)
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(.*).cccc.net$
    RewriteRule ^(.*)$ /%1/$1 [L]
    DirectoryIndex  index.php index.htm index.html
    </VirtualHost>

DNS:*.cccc.net=>99.99.99.99

一切都很好。

如果您输入wow.cccc.net,但没有该文件夹,服务器将返回404 Not Found。

有趣的是:今天,我要添加一个名为dev(/home/someuserblabla/cccnet/dev)的文件夹,但它总是返回403错误,当我简单地重命名文件夹时,这个问题立即得到了解决。

我仔细检查了Apache的所有配置文件,似乎没有什么问题,而且没有所谓的"dev"的"过滤器"

之后,我记得在系统根目录中有一个名为"dev"的文件夹。

然后我试了etc.cccc.net root.cccc.net。。。。

它们都返回403错误,而不是404错误。

我的线索是:

重写模块有一个与目录匹配的顺序。它首先搜索根文件夹,然后搜索当前文件夹。

有什么建议吗?我不希望它搜索根目录。

谢谢。

是的,您的重写规则将/作为基本目录,因此它将重写到该目录。尝试:

RewriteRule ^(.*)$ /home/someuserblabla/csuwnet/%1/$1 [L]

最新更新