如果域不相等,则htaccess重写URL,子文件夹就是这个

时间:2016-02-04 15:39:47

标签: php apache .htaccess redirect mod-rewrite

我正在努力让重写工作,需要一只手......

我有一组网站,这些网域就是这样的

example.com
example.co.uk
example.ie
example.com/gm

网站的设置方式意味着所有域都可以显示.com / gm内容(GM没有自己的域名,我们希望它只能从.com域名提供)

因此,我尝试使用 gm 子文件夹将使用错误网址的任何人重定向到正确的TLD。 E.G:

going to www.example.co.uk/gm would 301 to www.example.com/gm

我现在有这个:

RewriteCond %!{HTTP_HOST}:{REQUEST_URI} !^example.com:gm$ [L,R]
RewriteRule ^(.*)$ https://www.example.com/gm$1 [R=301,L]

哪个显然不开心

在正确的方向上欣赏一点,基本上从我可以告诉我需要一个规则来检查域名不等于.com如果他们试图转到/ gm /并将它们重定向到.com / gm /

谢谢!

2 个答案:

答案 0 :(得分:2)

更容易检查RewriteRule中是否请求了/gm/路径,并使用RewriteCond前缀检查主机名 - 这样的事情应该这样做:

RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteRule ^(gm/.*)$ https://www.example.com/$1 [R=301,L]

答案 1 :(得分:0)

你的htaccess充满了语法错误。

尝试以下方法:

RewriteCond %{HTTP_HOST} ^(www\.)?example.co.uk$
RewriteCond %{REQUEST_URI} ^/gm/
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

这将重定向

  • example.co.uk/gm

  • example.com/gm

在测试之前清除浏览器的缓存。