Htaccess domain.com на www.domain.com работает, но он теряет другие правила, связанные с SEO - PullRequest
1 голос
/ 18 апреля 2011

РЕДАКТИРОВАТЬ: ИСПРАВЛЕНО

Ну, после того, как я наткнулся на этот сайт и Google в течение нескольких часов, я нашел проблему:

Неверный код:

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

Хороший код:

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

Кажется, что REQUEST_URI не работает как $ 1 ... поэтому я изучаю mod_rewrite сложным способом.


Вопрос:

Условия:

  • основные правила переписывания для URL SEO

  • перенаправление домена с domain.com на www.domain.com

Проблема:

Страницы, не входящие в www.domain.com, теряют свои SEO-URL и возвращаются кисходные переменные php:

Пример.

SEO-URL: www.domain.com / Video + 1234

URL NonWWW: domain.com / Video + 1234

Результат (адресная строка браузера):

www.domain.com / index.php? Video = 1234

Желаемый:

www.domain.com / Video + 1234

Как заставить сервер сохранить старую форму?

.htaccess фрагмент:

RewriteEngine On
# RewriteBase /



RewriteRule ^Video\-(.+)\+([0-9]+)$ index.php?video=$2


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

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Ну, после того, как я наткнулся на этот сайт и Google в течение нескольких часов, я обнаружил проблему:

Неверный код:

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

Хорошая линия:

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

REQUEST_URI, похоже, не работает, как $ 1 ... поэтому я учусь mod_rewrite сложным способом.

0 голосов
/ 18 апреля 2011

Ваши правила такие:

RewriteEngine On
Options +FollowSymlinks -MultiViews

RewriteRule ^Video\+([0-9]+)$ http://www.domain.com/index.php?video=$2 [L,NC]

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

L в первом правиле остановит его после применения этого правила. Дайте мне знать, если это не сработает.

...