перенаправления веб-сайтов отличаются от конфигурации .htaccess - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть веб-страница, созданная в Wordpress v5.4, тема двадцать двенадцать и только что установленный сертификат SSL.

Я хочу иметь такую ​​структуру перенаправления (коды перенаправления в прямоугольниках), чтобы оптимизировать для SEO:

enter image description here

но по данным Google Chrome инспектор сайта У меня есть следующий:

enter image description here

Таким образом, схема не полностью оптимизирована, так как для двух случаев есть два перенаправления каскада, тогда как должно быть одно.

Что странно, текущая схема не отражает файл .htaccess. Мой файл .htaccess выглядит следующим образом:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Итак, мое понимание кода таково, что если URL введен без https: //, сценарий переписывает его в версию с https: // ничего другого , поэтому должно быть другое место, где выполняются другие перенаправления (например, с www -> без www).

Я проверил индекс. php - перенаправлений нет.

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

Не могли бы вы посоветовать мне, что еще я должен сделать, чтобы получить желаемую структуру перенаправлений?

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Первое правило перенаправить все www to https://domainname.com/, второе все http на https://domainname.com/, один прыжок

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule (.*) https://domainname.com/$1 [R=301,L]

RewriteCond %{HTTPS} off
RewriteRule (.*) https://domainname.com/$1 [R=301,L]

</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
0 голосов
/ 09 апреля 2020

Я предполагаю, что перенаправление с www to не- www is связано с адресом, который вы установили в своих настройках (панель инструментов WordPress → Настройки → Общие).

Для перенаправления, которое вы хотите для достижения, вы должны добавить условия перезаписи для www. в .htaccess

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...