Перенаправление не работает для сложных правил перезаписи (.htaccess) - PullRequest
0 голосов
/ 24 октября 2010

Я пытаюсь сделать редирект с не-www версии ссылки на www. Он отлично работает для чего-то вроде http://mywebsite.com, но не работает для запроса типа http://mywebsite.com/artists/metallica/ или даже сложного. Весь файл .htaccess ниже. Любые подсказки?

Options +FollowSymLinks

RewriteEngine On

RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f 

RewriteCond %{REQUEST_URI} !(.*).html

RewriteCond %{REQUEST_URI} !(.*)/$ 

RewriteRule ^(.*)$ http://mywebsite.com/$1/ [L,R=301]

RewriteRule ^artists/([^/-]+)-p([^/]+)/$ /artists.php?l=$1&p=$2 [QSA,L] 

RewriteRule ^artists/([^/]+)/$ /artists.php?l=$1 [QSA,L] 

RewriteRule ^submit/$ /submit.php [QSA,L] 

RewriteRule ^users/$ /users.php [QSA,L]  

RewriteCond %{THE_REQUEST} ^.*/index.php 

RewriteRule ^(.*)index.php$ http://www.mywebsite.com/$1 [R=301,L]

1 Ответ

1 голос
/ 24 октября 2010

Попробуйте это правило:

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...