htaccess help, необходимо принудительно установить www, https и удалить index.php - PullRequest
9 голосов
/ 27 июля 2011

У меня в файле htaccess есть перезапись, которая удаляет index.php из URL

RewriteEngine on
RewriteCond $1 !^(images|media|system|themes|_css|_js|favicon\.ico|robots\.txt|cert\.html|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

В дополнение к этому, я хочу форсировать www и https для любого запроса, который не имеет ни того, ни другого.

Так что в конечном итоге все URL должны выглядеть так: https://www.example.com/whatever/something/; и для целей SEO, если URL-адрес не попадает в цель, он должен 301 перенаправить на правильную версию, например:

http://example.com/about/
301 redirect to
https://www.example.com/about/

Буду рад некоторой помощи в достижении этого, спасибо!

1 Ответ

24 голосов
/ 27 июля 2011

Force WWW:

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] # include 's' here to force ssl in addition to www

Принудительный SSL:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Удалить "index.php":

RewriteCond %{THE_REQUEST} /index.php HTTP
RewriteRule (.*)index.php$ /$1 [R=301,L]
...