.htaccess - 子域总是重定向到主域

时间:2016-08-22 16:57:50

标签: php apache .htaccess redirect mod-rewrite

我对.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

非常感谢任何建议。

2 个答案:

答案 0 :(得分: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$

答案 1 :(得分:0)

我在.htaccess中看到很多问题,可能您只发布了部分问题。

我看到的主要问题是,以下几行记录了HTTP_HOSTwww.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的放置位置以及两个站点是否共享相同的根。