使用.htaccess将主域重定向到子文件夹而不影响辅助域

时间:2017-06-17 19:54:17

标签: apache .htaccess redirect mod-rewrite

我有2个域名:

  • gyanplease.com/gyanplease主域名(我已在.htaccess的帮助下更改了文档根目录)
  • mobiledevsolutions.com二级域名

在文档根目录中,我创建了一个名为gyanplease的文件夹,在.htaccess的帮助下,我已将gyanplease.com重写为gyanplease文件夹。这是重定向的代码:

#disable https
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !gyanplease/
RewriteRule (.*) /gyanplease/$1 [L]

现在,当我在同一台服务器上托管另一个域时,即mobiledevsolutions.com,那么它无法正常工作并发出404重定向错误。

1 个答案:

答案 0 :(得分:1)

你可以做的只是为该主机运行/gyanplease/重写,就像这样(替换最后两行):

RewriteCond %{HTTP_HOST} (?:^|\.)gyanplease.com$
RewriteCond %{REQUEST_URI} !^/gyanplease/
RewriteRule ^(.*)$ /gyanplease/$1 [L]

这样,此规则只会影响gyanplease.com

您也可以将第4行更改为此,因为未使用捕获:

RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

所以这一切都会成为你的新规则:

RewriteEngine on
# Disable HTTPS
RewriteCond %{HTTPS} on
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Rewrite gyanplease.com to /gyanplease/
RewriteCond %{HTTP_HOST} (?:^|\.)gyanplease.com$
RewriteCond %{REQUEST_URI} !^/gyanplease/
RewriteRule ^(.*)$ /gyanplease/$1 [L]