【发布时间】:2010-12-13 06:08:54
【问题描述】:
我有一堆域指向我主机上的同一目录“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]
我遇到了关于目录斜线指令的问题。
如果我尝试访问域 url 中的文件夹而没有像 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} 同名的目录中?
提前致谢
【问题讨论】:
标签: .htaccess mod-rewrite