Перезапись htaccess работает только без "www" и "https" - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть этот случай, когда перезапись работает только без www and https, это .htaccess:

RewriteRule ^en/(.*)/1348-duracell-32-aaa-pack.html$ /$1/3016-duracell-32-aaa-pack.html [R=301,NC,L]

этот URL работает и перенаправляет:

http://example.com/en/car-accessories/1348-duracell-32-aaa-pack.html

этот не:

https://www.example.com/en/car-accessories/1348-duracell-32-aaa-pack.html

есть идеи? Я потратил много часов на это без какого-либо решения, не уверенный в чем дело. Правило находится над файлом .htaccess.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 01 февраля 2020

Что вы подразумеваете под не работает? Второй URL вообще перенаправлен? Если вы работаете на платформе Linux, вы можете попробовать curl -L --head <url>, тогда вы сможете увидеть, происходит ли перенаправление или перенаправление (или перенаправление l oop). На самом деле curl - лучший способ проверить ваши правила, потому что ваш кеш браузера может подшутить над вами.

Обратите внимание, что $1 - первая захваченная группа из вашего регулярного выражения. Поэтому вы должны добавить хост, который вы хотите перенаправить на ie:

RewriteRule ^en/(.*)/1348-duracell-32-aaa-pack.html$  https://example.com/$1/3016-duracell-32-aaa-pack.html [R=301,NC,L]

В противном случае браузер, скорее всего, будет продолжать использовать текущее имя хоста. Если вы не предоставите полный URL-адрес, он должен восполнить пропущенные биты.

Но если все, что вам нужно, это удалить /en/ из URL-адреса, тогда вы могли бы написать более простой и понятный править.

...