我已经有两个重写规则现在可以正常工作,但还需要添加更多的代码才能完美工作。mod_rewrite如果文件存在
我有一个网站在mydomain.com上托管,所有subdom.mydomain.com都重新编译为mydomain.com/subs/subdom。我的CMS有如果被达成的文件不存在处理请求,重写可以这样判定:
RewriteCond $1 !^subs/
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ subs/%1/index.php?page=$1 [L]
我CMS处理解析像往常一样的一个部分。问题是,如果一个文件确实存在,我需要链接到它不经过我的CMS,我设法做到这一点是这样的:
RewriteCond $1 !^subs/
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ subs/%1/$1 [L]
到目前为止,似乎像一个魅力的工作。现在我很挑剔,我需要有存储在subs/default /中的默认文件。如果文件存在于子域文件夹中,我们应该抓住这个文件夹,但如果没有,我们需要从默认子域中获取文件。如果文件不存在,我们应该使用当前子域的404页面,除非没有。
我希望它描述得很好。感谢您的时间!