2016-08-22 78 views
0

我对.htaccess重写规则没有太多经验,所以我希望有人可以提供帮助。.htaccess - 子域总是重定向到主域

我创建了一个网站的子域,我想用于开发工作,但我认为当前.htaccess文件导致重定向到主域。这是当前.htaccess文件:

<Files 403.shtml> 
order allow,deny 
allow from all 
</Files> 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,L] 

RewriteCond %{HTTP_HOST} !^www.domain.co.uk$ [NC] 
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} ^160\.153\.16\.12 
RewriteRule (.*) http://www.domain.co.uk/$1 [R=301,L] 


RewriteCond %{HTTP_HOST} ^domain\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.co\.uk$ 

子域是dev.website.co.uk

任何意见将非常感激地接受。

+0

你需要解释这两个网站的结构。 .htaccess可以随时随地放置在您网站的文档根目录中。 –

+0

为什么子域不在.htaccess中?这似乎是不正确的.htaccess文件。 – carmel

回答

0

您的.htaccess有规则告诉它重定向到主域。只需从您的子域的.htaccess中删除它们。

RewriteCond %{HTTP_HOST} !^www.domain.co.uk$ [NC] 
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [L,R=301] 

RewriteCond %{HTTP_HOST} ^160\.153\.16\.12 
RewriteRule (.*) http://www.domain.co.uk/$1 [R=301,L] 

# I don't know what these are for 
RewriteCond %{HTTP_HOST} ^domain\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.co\.uk$ 
0

我看到你.htaccess许多问题,可能是你已经张贴只是其中的一部分。

主要问题,我看到,以下行赶上其中HTTP_HOST是从www.domain.co.uk不同任何情况下,并重定向到www.domain.co.uk

RewriteCond %{HTTP_HOST} !^www.domain.co.uk$ [NC] 
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [L,R=301] 

以下捕捉任何情况下HTTP_HOST是从^160\.153\.16\.12不同并重定向到www.domain.co.uk

RewriteCond %{HTTP_HOST} ^160\.153\.16\.12 
RewriteRule (.*) http://www.domain.co.uk/$1 [R=301,L] 

据我所知,其余的RewriteCond没有相应的重写规则是无用的。

RewriteCond %{HTTP_HOST} ^domain\.co\.uk$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.domain\.co\.uk$ 

的RewriteCond指令定义了一个规则的条件。一个或多个 RewriteCond可以在一个RewriteRule指令之前。下面的规则是 ,那么只有当URI的当前状态与它的 模式匹配并且这些条件都满足时才会使用。

最后,正如@Marc B所述,您需要解释放置.htaccess的位置以及两个站点是否共享相同的根。