Как совместить ЧПУ и перенаправление

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

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

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Написал ЧПУ для адреса
    index.php?id=forma . преобразовал его в вид сайт/forma/
    с помощью
    Код:
    RewriteEngine On
    RewriteRule ^([^/]*)/$ /?id1=$1 [L]
    Как теперь сделать, чтобы на мой сайт можно было зайти как по сайт/forma/ , так и по сайт/forma (отличие в последнем слеше)?
     
  2. ewg777

    ewg777

    Регистр.:
    6 авг 2007
    Сообщения:
    763
    Симпатии:
    321
    Код:
    RewriteRule ^forma$ /index.php?id=forma [L]
    RewriteRule ^forma/$ /index.php?id=forma [L]
    
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Забыл сказать что id=forma - это непостоянное значение.
    forma - это изменямемое значение. Т.е. id=forma , id=ind, id=rewrite ?
     
  4. ewg777

    ewg777

    Регистр.:
    6 авг 2007
    Сообщения:
    763
    Симпатии:
    321
    Пример. Danneo CMS
    Код:
    RewriteCond  %{REQUEST_URI}  !^/apanel(/)?$
    RewriteCond  %{REQUEST_URI}  !^/forum(/)?$
    RewriteCond  %{REQUEST_URI}  !^/setup(/)?$
    RewriteRule ^([a-zA-Z0-9]+)(/)?$  index.php?dn=$1 [NC]
     
  5. lordBlack

    lordBlack

    Регистр.:
    29 ноя 2007
    Сообщения:
    620
    Симпатии:
    246
    не нужно придумывать и изобретать велосипеды...
    правило указанное в начеле поста верное, просто в хедере нужно будет указать хряфу. вот и все.
    т.е.

    и все будет воркать
    как и со слешем, так и без оного.
     
  6. BDSG

    BDSG

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

    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{REQUEST_URI} ![^/]*\.[^/]*$
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [NS,L,R=301]

    автоматом будет подставлять завершающий слэш..
     
    dandandan нравится это.
  7. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    А вот у меня задача - нужно ставить слэш, если идео обращение не к файлу, то есть не к *.php, *.css и так далее. И ни папки, ни файлы - не существуют в реале. поэтому вариант из мануала
    Код:
    RewriteEngine  on
    RewriteBase    /~quux/
    RewriteCond    %{REQUEST_FILENAME}  -d
    RewriteRule    ^(.+[^/])$           $1/  [R]
    
    не работает
     
  8. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    А разве код BDSG не работает? По моему второе условие как раз и отсекает файлы (определяет по наличию точки в пути).
     
  9. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Поставил - работает. Из плюсов могу сказать, что работает для любого количество поуровней. Понадобилось сделать 3 реврайта. В каждом указанное выше правило работало.
     
Статус темы:
Закрыта.