【发布时间】:2011-12-01 15:37:02
【问题描述】:
我有一个共享主机,我想在其中托管多个网站。为此,为了清楚起见,我已将我的主域(即 www.mydomain.com)重定向到一个文件夹(即 /mydomain.com/)。但是,我想阻止从带有 404 错误(未找到)的 URL 直接访问此文件夹(www.mydomain.com/mydomain.com/)。
这是根目录下的.htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/mydomain.com/0.1/$ [NC]
RewriteRule ^(.*)$ /mydomain.com/0.1/$1
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ [NC]
RewriteRule ^(/)?$ mydomain.com/0.1/index.php [L]
RewriteCond %{THE_REQUEST}% ^[A-Z]{3,9}\ /mydomain\.com/ [NC]
RewriteRule . - [R=404,L]
这是 /mydomain/ 中的 .htaccess,其中包含一系列漂亮整洁的 URL 规则。
RewriteEngine On
RewriteRule ^about/(.+) index.php?a=about&b=$1
RewriteRule ^services/(.+) index.php?a=services&b=$1
现在是这样的结果:
访问 www.mydomain.com 会按预期显示 /mydomain/ 中的内容。但是,www.mydomain.com/mydomain/ 也会显示,忽略 404 规则,并创建另一个文件夹 - 无论名称如何 - 没有 htaccess 会抛出 404。
我已经处理这个问题 5 天了,并且尝试了所有方法。此时我不知道错误是来自根 .htaccess 还是来自文件夹。
提前致谢。
PS:为了清楚起见,我无法控制 httpd.conf 文件。
注意事项:
- 我忘了说 /mydomain.com/ 内还有一个名为 /0.1/ 的附加文件夹用于版本控制。
- 如果在 /mydomain.com/0.1/htaccess 中的“RewriteEngine On”之后包含“RewriteOptions Inherit”,我会收到 500 内部服务器错误。
- 完全删除 /mydomain.com/0.1/ htaccess 文件将为 www.mydomain.com/mydomain.com/0.1/ 产生所需的 404 错误,并在 www.mydomain.com 中产生 505
【问题讨论】:
标签: .htaccess mod-rewrite redirect dns