Миллион раз задал вопрос, но после прочтения многих ответов здесь, на SO, я до сих пор не могу понять это. Мне нужно перенаправить все запросы, как показано ниже:Перенаправление www. на не-www и перенаправить все http на https с .htaccess
- http://domain.tld>https://domain.tld
- http://www.domain.tld>https://domain.tld
- https://www.domain.tld>https://domain.tld
- http://sub.domain.tld>https://sub.domain.tld (если .htaccess находиться в папке субдомена)
До сих пор я использовал код из html 5boilerplate, которые решаются WWW к не-WWW
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/ [R=301,L]
</IfModule>
они также имеют код для HTTP к HTTPS перенаправляет, но после добавления этого куска коды (выше WWW перенаправления), страница загружается и после тайм-аута он показывает ошибка/слишком много перенаправляет
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Я также попытался примеры, как this SO answer, но до сих пор сайт не работает. Только решение теперь использовать первый кусок кода и заменить http
с https
, но это не решает наиболее важный редирект (1)
тока полного .htaccess
содержания:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\/$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /?([A-Za-z0-9_-]+)/?$ index.php?id=$1 [QSA,L]
#RewriteCond %{HTTPS} off [OR] #by uncommenting this, site stops working
RewriteCond %{HTTP_HOST} ^www
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule^https://%1%{REQUEST_URI} [R,L]
</IfModule>
Спасибо, Джастин, пример 1 отлично работает на всех хостах, пример 2 ведет себя так же, как и другие, слишком много перенаправлений – moped
так, на одном хостинге, пример 2 работает, а пример 1 - нет.хорошо иметь все возможные решения! – moped