【问题标题】:Check for a directory inside a subdirectory dynamically动态检查子目录中的目录
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多