301й редирект

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Mons, 16 апр 2010.

Статус темы:
Закрыта.
  1. Mons

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    917
    Есть страница
    Перейти по ссылке

    Через mod rewrite она доступна как
    Перейти по ссылке

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

    делал и
    RewriteRule ^/index.php?id_page=1&id_article=34 /article_1_34.html [L]

    делал и так:
    redirect /index.php?id_page=5&id_article=34 Перейти по ссылке

    и просто 301
    Реврайтятся страницы так:
    Код:
    RewriteRule ^article_([^_]*)_([^_]*)\.html$ /index.php?id_page=$1&id_article=$2 [L]
     
  2. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    Попробуй флаг R добавить
    Код:
    RewriteRule ^article_([^_]*)_([^_]*)\.html$ /index.php?id_page=$1&id_article=$2 [R=301,L]
    
     
    Mons нравится это.
  3. Mons

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    917
    Порисходит обратный редирект от желаемого.
    То бишь из обработанного урла к страшному.
     
  4. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
    Сорри, не внимательно прочёл. Показалось, что это правило, по которому нужно редиректить.
    Код:
    RewriteCond %{QUERY_STRING} id_page=([^_]*)&id_article=([^_]*)
    RewriteRule ^index.php$ /article_%1_%2.html? [L,R=301]
    
    Но тут другая проблема появляется - если использовать это правило одновременно с первым, мод реврайт зациклится. Как это побороть, что-то не соображу сейчас.
     
  5. Mons

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    917
    :) Если добавить то он редиректит на /article_ _.html
     
  6. Belial

    Belial

    Регистр.:
    1 фев 2010
    Сообщения:
    236
    Симпатии:
    113
  7. Mons

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    917
    хм... странно. Мозг начинает плавиться

    Apache/2.0.59 (Unix) PHP/5.2.1

    С ссылки длинной он делает редирект... на страницу с коротким URL
    По клику на сыkлку реврайт он выдает сраницу с текстом:
    ну и соответсвенно here, это та же самая ссылка. То бишь цикл.
    Ссылается на ссылку обработанную а та на себя и т.д


    Привожу полный листинг.

    Код:
    RewriteEngine On
    RewriteRule ^index\.html$ index\.php [L] 
    RewriteRule ^map\.html$ map\.php [L]
    RewriteRule ^contacts\.html$ contacts.php [L]
    RewriteRule ^news\.html$ readnews.php [L]
    RewriteRule ^news_([^_]*)\.html$ /readnews.php?id_news=$1 [L]  
    RewriteRule ^article_([^_]*)_([^_]*)\.html$ /index.php?id_page=$1&id_article=$2 [L]
    RewriteRule ^contacts\.html$ index.php?id_page=1&id_article=23 [L]
    RewriteRule ^photo_gallery\.html$ index.php?id_page=4&id_article=33 [L]
    RewriteRule ^about_me\.html$ index.php?id_page=1&id_article=21 [L]
    RewriteCond %{QUERY_STRING} id_page=([^_]*)&id_article=([^_]*)
    RewriteRule ^index.php$ /article_%1_%2.html? [L,R=301]
    
     
  8. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    Монс, если хотите именно 301 редирект странички, то он делается так
    PHP:
    Redirect 301 /old-page.html http://new-domain.ru/new-page.html
    браузеру отдается 301.
    Если через реврайт делать, отдается 200.
    PHP:
    RewriteEngine On
    RewriteRule 
    ^([^/]*)/([^/]*)\.htmlчтото.ru/index.php?id_page=$1&id_article=$[L]
     
  9. Mons

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    917
    Движек сразу генерит страницы послереврайта.
    htaccess только делаетт ссылание с длинной на короткую.

    Вариант
    Код:
    Redirect 301 /old-page.html http://new-domain.ru/new-page.html 
    делался в начале возни и как я писал не пашет.

    PHP:
    RewriteEngine On
    RewriteRule 
    ^([^/]*)/([^/]*)\.htmlчтото.ru/index.php?id_page=$1&id_article=$[L]
    так же не пашет ))
     
  10. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    Я про то, что реврайт и редирект немного разные вещи)

    а тот код, что я привел, работает 100%. Может быть у вас на хостинге htaccess запрещен?
     
Статус темы:
Закрыта.