301й редирект

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

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

    Mons

    Регистр.:
    2 апр 2006
    Сообщения:
    1.590
    Симпатии:
    920
    Есть страница
    http://www.чтото.ru/index.php?id_page=5&id_article=34

    Через mod rewrite она доступна как
    http://www.чтото.ru/article_5_34.html

    Не могу сделать чтобы по заходу на вариант один автоматом производился 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 http://чтотоe.ru/article_5_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
    Симпатии:
    920
    Порисходит обратный редирект от желаемого.
    То бишь из обработанного урла к страшному.
     
  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
    Симпатии:
    920
    :) Если добавить то он редиректит на /article_ _.html
     
  6. Belial

    Belial

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

    Mons

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

    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
    Сообщения:
    781
    Симпатии:
    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
    Симпатии:
    920
    Движек сразу генерит страницы послереврайта.
    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
    Сообщения:
    781
    Симпатии:
    153
    Я про то, что реврайт и редирект немного разные вещи)

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