mod_rewrite - 检查现有文件和目录
mod_rewrite - check for existing files and directories
我有 2 个域名,foo.com
和 bar.com
,在 bar.com
的根目录下有一个 .htaccess
文件,要求对 bar.com
的所有请求进行重定向到 foo.com
除了目录索引文件的初始搜索外,它指向 foo.com
.
处的特定 php 文件 (functions.php
)
这意味着对 bar.com
或 www.bar.com
的请求将看到 foo.com/functions.php
被访问,并且对图像、样式表等的各种请求继续访问 [= 的重写相对路径23=] 而不是 foo.com/function.phpimages/image.jpg
。 一切正常。
现在,问题来了。
我想在 bar.com
上包含一个不重定向的子目录。就像这样,对 bar.com/newdirectory/
的请求会转到该目录,所有相关文件请求都将正常运行,同时保持原始规则(如上所述)供任何在根目录下访问 bar.com
的人使用。目前,如果我尝试访问新的子目录,我会收到 404。
在我原来的 .htaccess
文件中,我包含了一个用于检查文件是否不存在的松散代码。我尝试添加标志 !-d
以首先检查目录是否不存在,但这导致对 bar.com
的请求直接进入 foo.com
而不是 foo.com/functions.php
当前.htaccess
文件:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Check the request isn't an existing file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteCond %{REQUEST_FILENAME} !^$ [NC]
RewriteRule ^(.*) http://www.foo.com/ [P]
您可以在RewriteBase /
之后添加:
RewriteRule ^newdirectory/? - [L]
还有其他人。无需测试文件,因为您仅重定向空 URI。
您可以使用:
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/ [P]
所有 .htaccess
:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^newdirectory/? - [L]
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/ [P]
我有 2 个域名,foo.com
和 bar.com
,在 bar.com
的根目录下有一个 .htaccess
文件,要求对 bar.com
的所有请求进行重定向到 foo.com
除了目录索引文件的初始搜索外,它指向 foo.com
.
functions.php
)
这意味着对 bar.com
或 www.bar.com
的请求将看到 foo.com/functions.php
被访问,并且对图像、样式表等的各种请求继续访问 [= 的重写相对路径23=] 而不是 foo.com/function.phpimages/image.jpg
。 一切正常。
现在,问题来了。
我想在 bar.com
上包含一个不重定向的子目录。就像这样,对 bar.com/newdirectory/
的请求会转到该目录,所有相关文件请求都将正常运行,同时保持原始规则(如上所述)供任何在根目录下访问 bar.com
的人使用。目前,如果我尝试访问新的子目录,我会收到 404。
在我原来的 .htaccess
文件中,我包含了一个用于检查文件是否不存在的松散代码。我尝试添加标志 !-d
以首先检查目录是否不存在,但这导致对 bar.com
的请求直接进入 foo.com
而不是 foo.com/functions.php
当前.htaccess
文件:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Check the request isn't an existing file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteCond %{REQUEST_FILENAME} !^$ [NC]
RewriteRule ^(.*) http://www.foo.com/ [P]
您可以在RewriteBase /
之后添加:
RewriteRule ^newdirectory/? - [L]
还有其他人。无需测试文件,因为您仅重定向空 URI。
您可以使用:
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/ [P]
所有 .htaccess
:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^newdirectory/? - [L]
RewriteRule ^$ http://www.foo.com/functions.php [P]
RewriteRule ^(.+) http://www.foo.com/ [P]