Как перенаправить все www requests на не www with параметры запроса - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь перенаправить все 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

Может кто-нибудь сказать мне, что проблема с моей конфигурацией?

1 Ответ

0 голосов
/ 20 марта 2020

Изменение порядка правил сработало как положено.

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
...