我没有太多的经验与。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
你的。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$
我看到你的.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$
rewritecsecond指令定义了一个规则条件。一个或多个rewritecsecond可以放在rewriterrule指令之前。下面的规则是然后仅在URI的当前状态与当前状态相匹配时使用
最后,正如@Marc B所说,您需要解释。htaccess放在哪里,以及两个站点是否共享相同的根。