Ошибка перенаправления htaccess без www - PullRequest
0 голосов
/ 13 февраля 2012

Вот мой код htaccess,

Options +FollowSymLinks 

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^mysite\.com [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L] 

RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^([a-zA-Z0-9]*)$ /profile.php?user=$1 [L,QSA]

когда я набираю "http://mysite.com/username", это работает

но когда я набираю "http://www.mysite.com/username" он перенаправляет на "http://mysite.com/profile.php?user=username"

как я могу это исправить?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2012

Это происходит потому, что .htaccess в вашем / (DocumentRoot) снова читается.

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{HTTP_HOST} ^www [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-zA-Z0-9]+)$ /profile.php?user=$1 [L,QSA] 

Кроме того, нет необходимости добавлять

RewriteEngine On 
RewriteBase /

более одного раза. Удалите вторые записи.

0 голосов
/ 14 февраля 2012

Вот код, который должен работать для вас:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^(mysite\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^([a-z0-9]*)$ profile.php?user=$1 [L,QSA,NC]
0 голосов
/ 13 февраля 2012

Согласно комментариям, это удалит "www", который, я думаю, отчасти то, что вы хотите.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.mysite.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

У меня сложилось впечатление, что это также связано с переменными GET?

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