Я пытаюсь перенаправить указанные c пути на старом сайте для указания c путей на новом домене. Для всего, что не указано в путях, я хочу, чтобы оно перенаправлялось на базовый путь нового домена. Я могу получить указанные c пути к работе, но как только я настрою перенаправление для всего остального, он просто выдвигает все пути к базовому пути в новом домене.
Пример того, что разыскивается:
http://www.olddomain.com/australia
http://www.olddomain.com/australia/hello
# Both go to http://www.newdomain.com/australia
http://www.olddomain.com/brazil
http://www.olddomain.com/brazil/hello
# Both go to http://www.newdomain.com/brazil
http://www.olddomain.com/china
http://www.olddomain.com/australia/hello
# Both go to http://www.newdomain.com/china
http://www.olddomain.com/some-landing-page
# Goes to http://www.newdomain.com
Вот что я использую:
RedirectMatch 301 ^/brazil/(.+)$ https://www.newdomain.com/pt-br/brazil
RedirectMatch 301 ^/australia/(.+)$ https://www.newdomain.com/en-au/australia
RedirectMatch 301 ^/china/(.+)$ https://www.newdomain.com/en-cn/china
RedirectMatch 301 ^/colombia/(.+)$ https://www.newdomain.com/es-co/colombia
RedirectMatch 301 ^/india/(.+)$ https://www.newdomain.com/en-in/india
RedirectMatch 301 ^/indonesia/(.+)$ https://www.newdomain.com/indonesia
RedirectMatch 301 ^/italy/(.+)$ https://www.newdomain.com/it-it/italy
RedirectMatch 301 ^/japan/(.+)$ https://www.newdomain.com
RedirectMatch 301 ^/malaysia/(.+)$ https://www.newdomain.com/en-my/malaysia
RedirectMatch 301 ^/mexico/(.+)$ https://www.newdomain.com/es-mx/mexico
RedirectMatch 301 ^/poland/(.+)$ https://www.newdomain.com/en-pl/poland
RedirectMatch 301 ^/singapore/(.+)$ https://www.newdomain.com/en-sg/singapore
RedirectMatch 301 ^/south-africa/(.+)$ https://www.newdomain.com/en-za/south-africa
RedirectMatch 301 ^/se-asia/(.+)$ https://www.newdomain.com/asia
RedirectMatch 301 ^/office/united-kingdom/london/contact-us(.*)$ https://www.newdomain.com/en-gb/united-kingdom
RedirectMatch 301 ^/united-kingdom/(.+)$ https://www.newdomain.com/en-gb/united-kingdom
RedirectMatch 301 ^/united-states/(.+)$ https://www.newdomain.com/en-us/united-states
# Everything else
RedirectMatch 301 ^/(.*)$ https://www.newdomain.com
Когда я оставляю этот бит под «Все остальное» включенным, он толкает все для newdomain.com. Тем не менее, когда я отключаю его, все пути, которые я указываю, работают, как задумано, но остальные остаются на старом домене.
Я также попробовал это:
RewriteRule ^(.*)$ https://www.newdomain.com [R=301,NC]
И это:
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^olddomaincom\.docksal$ [NC]
RewriteRule ^ http%{ENV:protossl}://www.newdomain.com [R=301,L]
Что я делаю не так? Как заставить его делать все то, что я хочу? В частности, как мне заставить его выполнить «RedirectMatch», как только он совпадет?