如何使用.htaccess/REGEX转发到基于原始URL格式的不同URL?

a5g8bdjr  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在尝试了解如何根据原始URL的格式有条件地将域转发到新域,如下所示:
old-domain.co.uk --> newdomain.co.uk/area/mytown
old-domain.co.uk/path-to-article --> newdomain.co.uk/path-to-article
下面的代码可以很好地处理任何在域名后面有路径的URL,但显然只是将www.example.com转发olddomain.co.uk到newdomain.co.uk

RewriteCond %{HTTP_HOST} ^olddomain.co.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.co.uk$ [NC]
RewriteRule ^(.*)$ https://newdomain.co.uk/$1 [R=301,L]

所以https://olddomain.co.uk/test/newpage将转发到https://newdomain.co.uk/test/newpage,这很好。
但是https://olddomain.co.uk将转发到https://newdomain.co.uk,这不是我想要的,所以如果原始URL在域之后没有路径,我需要“捕获”它,并将其重定向到特定的URL,而不仅仅是新域。
兜圈子试图找出这件事的逻辑,所以任何帮助都表示感谢!我假设我需要指定一些东西沿着的“如果网址是一个完全匹配,然后这样做,如果网址后的域,然后这样做,而不是”
谢谢
斯图尔特

kknvjkwl

kknvjkwl1#

1.检查是否没有URL没有路径(REQUEST_URI => /)并且域(HTTP_HOST)是www.old-domain.co.uk或old-domain.co.uk。
1.检查URL是否有路径(REQUEST_URI!= /)并且域(HTTP_HOST)是www.old-domain.co.uk或old-domain.co.uk。

# 1.
# old-domain.co.uk --> newdomain.co.uk/area/mytown
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.co\.uk$
RewriteCond %{REQUEST_URI} ^/$
RewriteRule - https://newdomain.co.uk/area/mytown [R=301,L]

# 2.
# old-domain.co.uk/path-to-article --> newdomain.co.uk/path-to-article
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.co\.uk$
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ https://newdomain.co.uk/$1 [R=301,L]

相关问题