.htaccess将域重定向到子目录而不更改URL

时间:2013-12-30 20:45:19

标签: apache .htaccess mod-rewrite redirect

我有以下设置: - > domain1.com是我的主域名,也是文档根目录 - > domain2.com是另一个注册为别名域的域名(意味着它与domain1.com完全相同),我有多个域名。

当我现在想要将该域重定向到我通常使用它来将域重定向到其他东西时(如外部网站):

RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://somewiredisp.com/user/bla/$1 [L,R]

如果我为需要为论坛或其他任何内容提供好网址的人注册域名,通常会使用此选项。像魅力一样工作 - 唯一的“问题”是浏览器中的地址栏会发生变化,但我已经读过,外部网址无法做到这一点,因为没有人抱怨它很好。

但是,现在我想将一些网址链接到一个子目录,而地址栏中没有更改网址。

domain2.com - > domain1.com/subdir(或domain2.com/subdir - 这无关紧要,因为它是别名域名。)

我目前的做法是

RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC]
RewriteRule ^(.*) http://domain1.com/subdir/ [P]

哪个不起作用(错误404) - 如果我直接调用domain1.com/subdir/,如果工作很明显。

我也尝试了几种

RewriteRule ^(.*) http://domain2.com/subdir/ [P]
RewriteRule ^(.*) /subdir/ [P]
RewriteRule ^(.*) http://domain1.com/subdir/index.html [P]

所有结果都相同。

也许这只是一个简单的错误,但我目前一无所知:/

2 个答案:

答案 0 :(得分:28)

您可以使用此规则:

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC]
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]

如果domain2.com /subdir的{​​{1}}请求已经存在,则会为此添加前缀。

答案 1 :(得分:0)

下面的代码对我来说很完美。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/folder_name/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder_name/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ folder_name/index.html [L]