动态检查子目录中的目录

时间:2010-12-02 18:21:35

标签: .htaccess mod-rewrite

我有一堆域名指向我主机上的同一目录“public_html” 主文件夹中有一个.htaccess文件,它将每个域本地重定向到与%{HTTP_HOST} mod_rewrite变量同名的特定文件夹。 (例如:将www.domain.com重定向到public_html/www.domain.com/

这是.htaccess:

的内容
RewriteEngine On
RewriteBase /
RewriteCond /%{HTTP_HOST}/#%{REQUEST_URI} !^([^#]+)#\1
RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [L]

对于Directory Slash指令,我遇到了问题 如果我尝试访问域网址中没有像http://www.domain.com/folder这样的正斜杠的文件夹,则mod_dir会应用DirectorySlash并从外部将我的请求重定向到http://www.domain.com/www.domain.com/folder/

我尝试在域目录重定向之后应用301重定向,如下所示:

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ $1/ [R=301,L]

但为了实现这一目标,我必须能够检查%{REQUEST_FILENAME}'文件夹中是否存在%{HTTP_HOST}。我甚至尝试过以下方法,但没有成功:

RewriteCond /%{HTTP_HOST}/%{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ $1/ [R=301,L]

如何动态检查%{REQUEST_FILENAME}是否是一个目录,该目录位于与%{HTTP_HOST}同名的目录中?

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您使用-d,则需要提供绝对文件系统路径。所以试试这个:

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}%{REQUEST_URI} -d
RewriteRule ^(.*[^/])$ $1/ [R=301,L]