[help] Mod rewrite

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем bugerok, 4 авг 2009.

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

    bugerok

    Регистр.:
    9 апр 2008
    Сообщения:
    300
    Симпатии:
    42
    Никак не выйдет сделать динамичную замену
    (где 28 - переменная)
    на
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    .htaccess:
    Код:
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteRule ^listing_details/(.+)/$ /$1/ [L]
    </IfModule>
    
     
    bugerok нравится это.
  3. bugerok

    bugerok

    Регистр.:
    9 апр 2008
    Сообщения:
    300
    Симпатии:
    42
    не захотело работать =(

    ___p://arendakv.in.ua/27/


    .htacces файл выглядит так
    Код:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^listing_details/(.+)/$ /$1/ [L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* ./index.php
    RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ listing_details/$2 [L]
    RewriteCond %{HTTP_HOST} ^www.arendakv.in.ua$
    RewriteRule ^.*$ "http\:\/\/arendakv\.in\.ua\/redirect\.php" [R=301,L]
    
     
  4. bugerok

    bugerok

    Регистр.:
    9 апр 2008
    Сообщения:
    300
    Симпатии:
    42
    Не нашел ответа на подобный вопрос... =(
     
  5. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Если честно, я так и не понял суть записей вроде

     
  6. bugerok

    bugerok

    Регистр.:
    9 апр 2008
    Сообщения:
    300
    Симпатии:
    42
    2-ю строчку я удалил, а 3-я делает редирект с www.*.in.ua на redirect.php, который ее потом шлет на http://*.in.ua

    Сейчас файл имеет такую структуру

    Код:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^listing_details/(.+)/$ /$1/ [L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* ./index.php
    RewriteCond %{HTTP_HOST} ^www.arendakv.in.ua$
    RewriteRule ^.*$ "http\:\/\/arendakv\.in\.ua\/redirect\.php" [R=301,L]
    
     
  7. Gansik

    Gansik Писатель

    Регистр.:
    15 дек 2007
    Сообщения:
    8
    Симпатии:
    1
    Не хотел тему создавать и решил спросить здесь!
    Нужна такая штука!
    Нужно перенаправить папку sait.ru/papka
    на papka.sait.ru
    При чем что б все ссылки с sait.ru/papka Перенпарвлялись на papka.sait.ru
    например набираем в адресе sait.ru/papka/index.php?mode=user&login=login$pass=pass а нас перекидывает на papka.sait.ru/index.php?mode=user&login=login$pass=pass

    Заренее благодарен всем за помощь:)
     
  8. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    bugerok
    если перебросить, примерно то так

    RewriteCond ^listing_details
    RewriteRule ^listing_details/(.*) /$1 [R=301,L]


    Gansik
    полагаю что аналогично

    RewriteRule ^(\s+)/(.*) $1.%{HTTP_HOST}/$2 [R=301,L]
     
  9. bugerok

    bugerok

    Регистр.:
    9 апр 2008
    Сообщения:
    300
    Симпатии:
    42
    Если добавить эти 2 строчки, то сайт уходит в ошибку 500(Internal Server Error)
    Код:
    Internal Server Error
    
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    
    Please contact the server administrator, webmaster@arendakv.in.ua and inform them of the time the error occurred, and anything you might have done that may have caused the error.
    
    More information about this error may be available in the server error log.
    
    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
    А если оставить только
    RewriteRule ^listing_details/(.*) /$1 [R=301,L]
    то результата 0 =(
     
  10. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    давай по пунктам

    1.
    RewriteEngine On
    инициировали mod_rewrite

    2.
    RewriteBase /
    указали корень

    3.
    RewriteRule ^listing_details/(.+)/$ /$1/ [L]
    если первый параметр (каталог пути) uri имеет значение listing_details то отдаем в index второй элемент пути

    4.
    RewriteCond %{REQUEST_FILENAME} !-d
    если реально есть такая директория в фс - открываем

    5.
    RewriteCond %{REQUEST_FILENAME} !-f
    если реально есть такой файл в фс - открываем

    6.
    RewriteRule .* ./index.php
    все остальное отдем в index.php

    7.
    RewriteCond %{HTTP_HOST} ^www.arendakv.in.ua$
    RewriteRule ^.*$ "http\:\/\/arendakv\.in\.ua\/redirect\.php" [R=301,L]
    а это уже бред какой-то - если обращение к адресу "www.arendakv.in.ua" (читай - корню, читай - index.x), редиректим на redirect.php с http ошибкой 301..

    допустим дошли до последней инструкции.. а мы вообще никогда до нее не дойдем, т.к. раньше сработает 6-ая - она вообще все ловит (кстати убери "./" перед "index.php" - корень в 2 указан)..

    теперь.. нужно вход с listing_details перекинуть в корень.. тут вопрос: отдать скрипту второй параметр или перенаправить?..

    если первое, то у тебя все сделано в 3..

    если второе, замени в конце инструкции 2 [L] на [R=301,L].. только смысла в этом редиректе не вижу, если ты ссылки как isting_details/123/ ставишь.. точнее как то это криво..

    вообще хотелось бы полной(!) постановки задачи, т.к. вопрошаемое вызывает некоторое недоумение..

    примерно так..
     
    bugerok нравится это.
Статус темы:
Закрыта.