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

时间:2013-12-11 20:12:39

标签: apache mod-rewrite

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 ==&gt; 99.99.99.99

一切正常。

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

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

我仔细检查了Apache的所有配置文件,似乎没什么不对,并且没有“过滤器”用于称为“dev”的东西

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

然后我尝试了etcccc.net root.cccc.net ....

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

我的线索是:

重写模块的订单与目录匹配。它首先搜索根文件夹,然后搜索当前文件夹。

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

感谢。

1 个答案:

答案 0 :(得分:1)

是的,您的重写规则有/作为基目录,因此它是重写的位置。尝试:

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