Получение перенаправления .htaccess из одного домена в другой для работы в WWW (http://www. и https://www.), HTTP и HTTPS - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть сценарий для перенаправления. У меня проблемы с оборачиванием головы.

Цели:

  • old-domain.com / store необходимо перенаправить на new-domain.com/store
  • Существует три сценария проверки, которые должныостаться на Old-Domain.com
  • Все остальное от old-domain.com для перенаправления на new-domain.com
  • Эти правила должны применяться ко всем сценариям HTTP, HTTPS и WWW (HTTPи HTTPS)

Проблема, с которой я столкнулся, заключается в том, что old-domain.com/store правильно перенаправляет только на new-domain.com/store, когда я удаляю перенаправления WWW.Я не могу понять, чтобы все хорошо играли вместе.

Вот что у меня есть:

Options +FollowSymLinks
## Rewrite rules
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.old-domain.com$
RewriteRule ^(.*)$ http://old-domain.com/$1 [R=301]
RewriteCond %{HTTP_HOST} ^www.old-domain.com$
RewriteRule ^(.*)$ https://old-domain.com/$1 [R=301]
RewriteCond %{REQUEST_URI} !^/validation-script-1\.html
RewriteCond %{REQUEST_URI} !^/validation-script-2\.html
RewriteCond %{REQUEST_URI} !^/validation-script-3\.html
Redirect 301 /store/ https://new-domain.com/store
RewriteRule ^(.*)$ https://new-domain.com/ [R=301,L]
</IfModule>

Мы также попробовали следующее, но затем сценарии проверки перестают проходить:

Options +FollowSymLinks
## Rewrite rules
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/validation-script-1\.html
RewriteCond %{REQUEST_URI} !^/validation-script-2\.html
RewriteCond %{REQUEST_URI} !^/validation-script-3\.html

# Remove trailing slash from non-filepath urls
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ http://old-domain.com/%1 [R=301,L]

# Include trailing slash on directory
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ http://old-domain.com/$1/ [R=301,L]

RewriteRule ^/?store https://new-domain.com/store [R=301,L]

# Remove WWW
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [OR,NC]
RewriteRule ^(.*)$ https://new-domain.com/ [R=301,L]

</IfModule>

1 Ответ

1 голос
/ 27 сентября 2019

Следующее правило перезаписи перенаправит все (www.) URL-адреса old-domain.com на https://new-domain.com/, кроме URL-адресов, содержащих validation-script- (1 | 2 | 3) .html

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/validation-script-(1|2|3)\.html$
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$
RewriteRule ^(.*)$ "https\:\/\/new-domain\.com\/$1" [R=301,L]

Проверкаэто демо https://htaccess.madewithlove.be? share = f0deda97-dff8-569e-bd6f-411b8a779361

Редактировать: перенаправить old-domain.com/store или old-domain.com/store/ на новый - domain.com/pages/store

RewriteRule ^store/?$ "https\:\/\/new-domain\.com\/pages\/store" [R=301,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...