我对.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 :(得分: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_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的放置位置以及两个站点是否共享相同的根。