Правила перенаправления htaccess - Как перенаправить на один уровень вверх? - PullRequest
3 голосов
/ 16 июля 2011
http://mysite.com/level-1/level-2/level-3/

Я хочу перенаправить на

http://mysite.com/level-1/level-2/

"уровень-1" и "уровень-2" - это все, что пользователь вводит ... (не эти точные слова)

Не могли бы вы направить меня к учебнику или дать несколько советов?

Большое спасибо !!

Ответы [ 2 ]

3 голосов
/ 16 июля 2011

На основании вашего комментария (из папки уровня 3 в папку уровня 2 ИМЕННО с 301 постоянным перенаправлением):

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+/[^/]+/)[^/]+/$ http://www.example.com/$1 [QSA,R=301,L]
  1. Это правило перенаправит example.com/hello/pink/kitten/ в example.com/hello/pink/

  2. Если структура URL отличается, перенаправление НЕТ не произойдет:

    • отсутствует косая черта (например, example.com/hello/pink/kitten)
    • 4-URL с глубоким уровнем (например, example.com/hello/pink/kitten/family/)
  3. Это правило необходимо поместить в .htaccess в корневой папке веб-сайта.При размещении в другом месте (например, в конфигурационном файле Apache, например, внутри <VirtualHost>), правило требует небольшой настройки.

3 голосов
/ 16 июля 2011

Вы просто хотите выбросить то, что после второго слэша. Это простое правило:

RewriteRule ^(.*?/.*?/).+$ $1

Затем выясните, хотите ли вы таких вещей, как [L, QSA]. Вы можете или не можете.

...