mod_rewrite - 检查现有文件和目录

时间:2015-01-15 13:44:45

标签: php apache .htaccess mod-rewrite redirect

我在foo.com的根目录下有2个域名,bar.com.htaccess以及bar.com文件,要求bar.com的所有请求重定向到{ {1}}除了初始搜索目录索引文件,该文件指向foo.com处的特定php文件(functions.php)。

这意味着foo.combar.com的请求会看到www.bar.com被访问,并且对图片,样式表等的各种请求继续访问重写的相对路径{{1}而不是foo.com/functions.php一切正常

现在,问题。

我想在foo.com/images/image.jpg上包含一个不重定向的子目录。同样,foo.com/function.phpimages/image.jpg的请求进入该目录,所有相关文件请求都正常运行,同时保留原始规则(如上所述),以便在root用户访问bar.com。目前,如果我尝试访问新的子目录,我会得到404.

在我原来的bar.com/newdirectory/文件中,我包含了一个松散的代码,用于检查文件是否存在。我尝试添加标记bar.com以检查目录是否不存在,但这导致请求.htaccess直接转到!-d而不是bar.com

当前foo.com文件:

foo.com/functions.php

1 个答案:

答案 0 :(得分:2)

您可以在RewriteBase /之后添加:

RewriteRule ^newdirectory/? - [L]

对于其他人。无需测试文件,因为您只重定向空URI 您可以使用:

RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/$1 [P]

适用于所有.htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule ^newdirectory/? - [L]

RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/$1 [P]