1

У меня есть некоторые проблемы с настройками .htaccess. Мой сайт Главная страница URL является: http://www.domain.com/b/en/index.php, и я использую mod_rewrite создать довольно URL: http://www.domain.com/enПеренаправление старых URL-адресов на красивые URL-адреса и перенаправление старых URL-адресов на новый .htaccess

Это мои правила перезаписи для симпатичных ссылок (Она работает):

RewriteRule ^en/(.*)$ /b/$1 [L,QSA,NC,PT] 

Это довольно URLS то, что я хочу , но когда я перенаправляю «старые URL-адреса» на новые URL-адреса, возникают некоторые проблемы.

My Chrome браузер показывает "www.domain.com redirected you too many times."

Это мои старые адреса перенаправить новое правило:

RewriteRule ^b/en/(.*)$ /en/$1 [NC,L,R=301] 
+0

Не используйте 'флаг PT'. – hjpotter92

ответ

0

Это общая проблема 2-часть. Вам нужно перенаправить необработанный запрос на похорошела один:

RewriteRule ^en/(.*)$ /b/en/$1 [L,QSA,NC] 

RewriteCond %{THE_REQUEST} ^GET\ /b/(en)/(\S*) [NC] 
RewriteRule ^b/ /%1/%2 [R=301,L] 

Обязательно очистить кэш браузеров перед тестированием новых правил.

+0

Он работает! Спасибо за Вашу поддержку. – evenloooo

0

У меня был более общий прецедент, и мне пришлось немного изменить решение @ hjpotter92.

Старая структура URL: http://example.com/index.php?page=foo
Новая структура URL: http://example.com/foo

Так что я хотел сделать URL, «довольно» (т.е. SEO-дружественный), но также есть старая (некрасивая) URL-перенаправления на новый URL-адреса поэтому старые закладки все равно будут работать.

Вот мое решение:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^/?(.*)$ /index.php?page=$1 [L,QSA,NC] 

RewriteCond %{THE_REQUEST} ^GET\ \/?index\.php\?page=(\S*) [NC] 
RewriteRule ^index.php /%1? [R=301,L]