Я пытаюсь получить правила перезаписи htaccess, чтобы удалить index.php
из URL-адреса, а также перенаправить www.
запросы к версии, отличной от www.
Это мой htaccess, который отлично работает с удалением index.php:
RewriteEngine on RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
И я столкнулся с другим вопросом о том, как удалить часть www
:
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Но я просто не могу заставить их играть красиво вместе! Любые советы / предложения, которые наиболее ценятся!
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]
RewriteEngine On
"начинается" переписывание. RewriteCond
и RewriteRule
работают как пары. Здесь мы сначала отправляем пользователя в не-www-версию и очищаем URL-адреса.
Сначала вам нужно убедиться, что правило перезаписи «не-www» будет первым, а затем одно, которое перенаправит все запросы в файл начальной загрузки CodeIgniter. Обратите внимание, что следующий код будет отмечать только перезаписи HTTP. Если вам также нужен HTTPS, он требует некоторых изменений.
RewriteEngine on # Sending all www requests to the non-www version. RewriteCond %{HTTP_HOST} ^www.domain.com [NC] RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] # Now the CodeIgniter part RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA]