За последние 24 часа нас посетили 20620 программистов и 1011 роботов. Сейчас ищут 367 программистов ...

Перенаправление в htaccess

Тема в разделе "PHP для новичков", создана пользователем Yadomaru, 16 апр 2018.

  1. Yadomaru

    Yadomaru Активный пользователь

    С нами с:
    4 июл 2013
    Сообщения:
    10
    Симпатии:
    0
    Здравствуйте!
    В файле .htaccess стоит перенаправление вида:

    RewriteRule page1/(.*)/(.*)/$ page2/index.php

    В итоге страница, например, site.ru/page/param1/final1/ обрабатывается файлом site.ru/page2/index.php и соответственно URL остается исходным - site.ru/page/param1/final1/

    Подскажите, пожалуйста, как можно реализовать, чтобы такие страницы продолжали обрабатываться этим файлом, но добавить 301 редирект в случае изменения "param1"?

    То есть:
    site.ru/page/param1/final1/ --> site.ru/page/param1/final1/
    site.ru/page/param2/final1/ --> site.ru/page/param1/final1/
    site.ru/page/param3/final1/ --> site.ru/page/param1/final1/

    site.ru/page/param1/final2/ --> site.ru/page/param1/final2/
    site.ru/page/param2/final2/ --> site.ru/page/param1/final2/
    site.ru/page/param3/final2/ --> site.ru/page/param1/final2/

    Пробовал сделал вот так, но получается цикличность:
    RewriteRule page1/(.*)/(.*)/$ page2/index.php
    RewriteRule ^page1/(.*)/final1/ /page1/param1/final1/ [R=301,L]
    RewriteRule ^page1/(.*)/final2/ /page1/param1/final2/ [R=301,L]

    Запутанно, наверно, прошу простить.

    Заранее благодарен за помощь!
     
  2. Yadomaru

    Yadomaru Активный пользователь

    С нами с:
    4 июл 2013
    Сообщения:
    10
    Симпатии:
    0
    Может кто-то помочь с решением такой проблемы?
     
  3. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    Код (Text):
    1. RewriteRule ^(page1)/(?!param1/)[^/]+/(final[12]/)$ /$1/param1/$2 [R=301,L]
    2. RewriteRule ^page1/(.*)/(.*)/$ page2/index.php