Переписать старые URL-адреса в красивые URL-адреса и перенаправить старые URL-адреса в новые с помощью .htaccess

apache .htaccess mod-rewrite url-redirection friendly-url

482 просмотра

2 ответа

25 Репутация автора

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

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

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

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

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

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

RewriteRule ^b/en/(.*)$ /en/$1 [NC,L,R=301]
Автор: evenloooo Источник Размещён: 19.07.2016 08:26

Ответы (2)


0 плюса

62422 Репутация автора

Решение

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

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

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

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

Автор: hjpotter92 Размещён: 19.07.2016 08:35

1 плюс

1373 Репутация автора

У меня был более общий вариант использования, и мне пришлось немного изменить решение @ 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]
Автор: WackGet Размещён: 11.10.2017 04:02
Вопросы из категории :
32x32