我在重定向网站文件夹链接时遇到了一个简单的问题。我有一个主域名,让我们说ABC.COM和我有另一个子域名XYZ.com。我在ABC.com的文档根文件夹中有XYZ.com,文件夹名称是otherite。一切都很完美,但是当我在www.XYZ.com/hero等浏览器中手动输入时,它需要m tot hat目录,但是浏览器中的url更改并显示www.XYZ.com/othersite/hero。我不确定它为什么会这样做,但是当我输入www.XYZ.com/hero/时,它就可以使用,即最后输入。
这是我在abc.com htaccess中的主要htaccess所拥有的内容
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^xyz\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.xyz\.com$
RewriteCond %{REQUEST_URI} !^/othersite/
RewriteRule ^(.*)$ othersite/$1
答案 0 :(得分:1)
这是因为mod_dir已打开并会自动重定向缺少尾部斜杠的目录的请求以包含尾部斜杠。有一个information disclosure security risk when you don't do this:
关闭尾部斜杠重定向可能会导致信息泄露。考虑
mod_autoindex
处于活动状态(Options +Indexes
)并且DirectoryIndex
设置为有效资源(例如,index.html)并且没有为该URL定义其他特殊处理程序的情况。在这种情况下,带有斜杠的请求将显示index.html文件。 但是没有尾随斜杠的请求会列出目录内容。
因此,您可以通过包含以下内容来关闭此自动重定向:
DirectorySlash Off
如果您不关心显示目录内容而不是索引文件的问题。或者,您可以在内部重写之前执行重定向,以确保有一个尾部斜杠但不暴露内部:
RewriteCond %{DOCUMENT_ROOT}/othersite/%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ /$1/ [L,R=301]
然后是你的其他规则。