Я пытаюсь перенаправить все www URLs на не- www URLs
с:
1. http://example.com/web-url 2. http://www.example.com/web-url 3. https://www.example.com/web-url
на:
https://example.com/web-url
Я использовал конфигурация, как показано ниже.
RewriteEngine on # If a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward it to index.php RewriteRule . index.php RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
По вышесказанному все вроде бы нормально, но третий вариант работает не так, как ожидалось. Проблема https://www.example.com/web-url перенаправлена на https://example.com/index.php
https://www.example.com/web-url
https://example.com/index.php
Может кто-нибудь сказать мне, что проблема с моей конфигурацией?
Изменение порядка правил сработало как положено.
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # If a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward it to index.php RewriteRule . index.php