Поддержка → Проблемы и решения → Перенаправление в .htaccess
Перенаправление в .htaccess
-
В вордпресе недавно. Друг попросил посмотреть, что-то его сайт не перенаправляет с http в https
На джумле это делал так:
RewriteEngine On RewriteRule ^(.*)$ index.php [F,L] RewriteCond %{HTTP_HOST} ^www [NC,OR] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://мой сайт.net/$1 [L,R=301]
А для Вордпресса эти правила такие же или нужно что-то менять?
Версия wordpress-5.3.2
Спасибо за подсказку!
-
А для Вордпресса эти правила такие же или нужно что-то менять?
Апачу вообще-то совершенно без разницы кто потом будет обрабатывать запрос.
значит, так понял, такие же правила без всяких мелких доработок?
а если у меня нету файла .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
и какие строчки из стандартного файла добавить иил убрать дял перенаправления?
Вот так, правильно:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^(.*)$ index.php [F,L] RewriteCond %{HTTP_HOST} ^www [NC,OR] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://meirbruk.net/$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
такие же правила без всяких мелких доработок?
В общем случае — да. От движка это не зависит, но зато зависит от конфигурации сервера.
а если у меня нету файла .htaccess
Такой .htaccess нужен для работы ЧПУ. Если оно не включено (ссылки вида ?p=1), то и .htaccess не нужен.
Вот так, правильно
Между
# BEGIN WordPress
и# END WordPress
лучше ничего не менять, эти изменения будут перезаписаны. Свои правила рекомендуется добавлять перед этим фрагментом.Такой .htaccess нужен для работы ЧПУ. Если оно не включено (ссылки вида ?p=1), то и .htaccess не нужен.
И где ЧПУ в Worpresse включить?
- Ответ изменён 4 года, 1 месяц назад пользователем elimelech.
И где ЧПУ в Worpresse включить?
В настройках постоянных ссылок.
Эти ЧПУ надо включать до того как я пропишу эти правила или после? :
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{ENV:HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] # BEGIN WordPress RewriteRule ^index\.php$ — [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Эти ЧПУ надо включать
А надо?
Редирект на https абсолютно никак не связан с наличием или отсутствием ЧПУ.
Если Вы хотели спросить про место в файле, то проыерку протокола логично выполнять до проверки наличия файла/директории.
Ваш пример .htaccess некорректен: нельзя разрывать блок wordpress на куски, т.к. если/когда он перезапишется в свой оригинальный вид, то сломает логику IfModule.
Вы хотите сказать, что надо вот так написать? :
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{ENV:HTTPS} !=on RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] RewriteRule ^index\.php$ — [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Я не понимаю, что там ворпресс перезаписывает в .htaccess? Что значит перезаписывает?
- Ответ изменён 4 года, 1 месяц назад пользователем elimelech.
что там ворпресс перезаписывает в .htaccess?
Все, что находиться между
# BEGIN WordPress
и# END WordPress
Что значит перезаписывает?
Удаляет то что есть и пишет то, что считает нужным.
Вы хотите сказать, что надо вот так написать? :
Нет. Вот этот фрагмент вообще не трогаем
# 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
Свои правила пишем либо до него, либо после.
Что значит перезаписывает?
Это значит, что все от
# BEGIN WordPress
и до# END WordPress
удаляется и вписывается то, что движок считает правильным.Вообще-то, WP сейчас это всё прямо в htaccess и пишет:
# Строки между
BEGIN WordPress
иEND WordPress
были созданы автоматически.
# Они могут быть изменены только фильтрами WordPress.
# Все изменения между этими отметками будут перезаписаны.- Ответ изменён 4 года, 1 месяц назад пользователем Yuri.
Но почему-то получается двойной редирект если проверить адрес типа http://www.мой.сайт
, т.е сначало перенаправляет на сайт https://www.мой.сайт, а потом с https://www.мой.сайт на https://мой.сайтЧто там добавить чтобы одним редиректом перенаправляло сразу куда надо?
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L] RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
- Тема «Перенаправление в .htaccess» закрыта для новых ответов.