Ну вот и сам вопрос:
1.есть сайт
www.xxxx.in.ua/index.php
2.есть админ страничка
www.xxxx.in.ua/admin/index.php
3.GET параметры на сайте должны быть в таком виде
www.xxxx.in.ua/index.php?page=main
www.xxxx.in.ua/index.php?page=main&subpage=submain
4.GET параметры на странице админа должны быть в таком виде
www.xxxx.in.ua/admin/index.php?page=menu
www.xxxx.in.ua/admin/index.php?page=menu&do=delete
www.xxxx.in.ua/admin/index.php?page=menu&do=edit&menuid=3
5. Для нормального вида ссылок сделано следующее (.htaccess)
Код
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&subpage=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/?$ admin/index.php?page=$1 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ admin/index.php?page=$1&do=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ admin/index.php?page=$1&do=$2&menuid=$3 [L]
</IfModule>
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&subpage=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/?$ admin/index.php?page=$1 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ admin/index.php?page=$1&do=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ admin/index.php?page=$1&do=$2&menuid=$3 [L]
</IfModule>
ПРОБЛЕМЫ:
1. При ссылке http://www.webguru/admin/menu получается что реальный адрес www.xxxx.in.ua/index.php?page=admin&subpage=menu
2. При ссылке http://www.webguru/admin/menu/xxxx получается что реальный адрес www.xxxx.in.ua/admin/index.php?page=admin&do=menu&menuid=xxxx
Подскажите пожалуйста как это сделать правильно. Буду очень благодарен
Спустя 16 минут, 4 секунды (29.09.2008 - 22:23) zash написал(а):
Не уверен на все 100%, но мне кажется что все дело в конечном слэше, то есть если попробовать набрать "http://www.webguru/admin/menu/" со слэшэм в конце то все будет ОК. Если так то в правилах нужно написать без слэшей, те:
Код
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)?$ index.php?page=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?page=$1&subpage=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)?$ admin/index.php?page=$1 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ admin/index.php?page=$1&do=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ admin/index.php?page=$1&do=$2&menuid=$3 [L]
</IfModule>
RewriteEngine On
RewriteRule ^([A-Za-z0-9-]+)?$ index.php?page=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?page=$1&subpage=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)?$ admin/index.php?page=$1 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ admin/index.php?page=$1&do=$2 [L]
RewriteRule ^admin/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ admin/index.php?page=$1&do=$2&menuid=$3 [L]
</IfModule>
Спустя 11 минут (29.09.2008 - 22:34) v3l0m написал(а):
только что попробовал
1. при http://www.xxxx.in.ua/admin строка сама подменяется на http://www.xxxx.in.ua/admin/?page=admin а реальный адрес остается на http://www.xxxx.in.ua/index.php.........
2. при http://www.xxxx.in.ua/admin/ реальный адрес такой http://www.xxxx.in.ua/index.php?page=admin
3. при http://www.xxxx.in.ua/main все правильно адрес http://www.xxxx.in.ua/index.php?page=main
4. при http://www.xxxx.in.ua/main/ капец адрес нот фаунд
1. при http://www.xxxx.in.ua/admin строка сама подменяется на http://www.xxxx.in.ua/admin/?page=admin а реальный адрес остается на http://www.xxxx.in.ua/index.php.........
2. при http://www.xxxx.in.ua/admin/ реальный адрес такой http://www.xxxx.in.ua/index.php?page=admin
3. при http://www.xxxx.in.ua/main все правильно адрес http://www.xxxx.in.ua/index.php?page=main
4. при http://www.xxxx.in.ua/main/ капец адрес нот фаунд
Спустя 4 минуты, 1 секунда (29.09.2008 - 22:38) v3l0m написал(а):
а реально эти правила как-то разграничить по директориям..??
просто у меня в голову пока другие варианты не приходят...
просто у меня в голову пока другие варианты не приходят...
Спустя 10 часов, 37 минут, 38 секунд (30.09.2008 - 09:16) bvn написал(а):
Может использовать кондишены?
Код
RewriteCond %{REQUEST_FILENAME} ((admin)/.*)
RewriteRule ... правила для админки
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ... правила для остальных не-директорий
RewriteRule ... правила для админки
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ... правила для остальных не-директорий
Спустя 31 минута, 16 секунд (30.09.2008 - 09:47) linedmk написал(а):
Вот строка
которая и преобразует любые два значения в
в общем нужно привести к виду типа
Код
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&subpage=$2 [L]
которая и преобразует любые два значения в
Код
www.xxxx.in.ua/index.php?page=ля-ля&subpage=ля-ля
в общем нужно привести к виду типа
Код
RewriteRule ^page/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&subpage=$2 [L]
Спустя 7 минут, 42 секунды (30.09.2008 - 09:55) amadeus написал(а):
Очень правильный совет, что хорошо бы автору разобраться с директивой RewriteCond
Ну, а в текущем примере, примитивно можно добиться желаемого результата разместив правила для директории admin в тексте файла выше правил для общей директории, тогда
http://www.webguru/admin/menu обработается по правилу
RewriteRule ^admin/([A-Za-z0-9-]+)?$ admin/index.php?page=$1 [L]
а не по правилу
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?page=$1&subpage=$2 [L]
Да и надо ещё предусмотреть, что нужно сделать для url http://www.webguru/admin/ сейчас это обработается только по правилу
RewriteRule ^([A-Za-z0-9-]+)?$ index.php?page=$1 [L]
что, видимо, не очень устроит автора.
Ну, а в текущем примере, примитивно можно добиться желаемого результата разместив правила для директории admin в тексте файла выше правил для общей директории, тогда
http://www.webguru/admin/menu обработается по правилу
RewriteRule ^admin/([A-Za-z0-9-]+)?$ admin/index.php?page=$1 [L]
а не по правилу
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)?$ index.php?page=$1&subpage=$2 [L]
Да и надо ещё предусмотреть, что нужно сделать для url http://www.webguru/admin/ сейчас это обработается только по правилу
RewriteRule ^([A-Za-z0-9-]+)?$ index.php?page=$1 [L]
что, видимо, не очень устроит автора.
Спустя 2 часа, 40 минут, 53 секунды (30.09.2008 - 12:35) bvn написал(а):
А еще я хотел было сказать... Вобщем, это мое ИМХО, я бы не стал заморачиваться разбиением сегментов пути с помощью mod_rewrite, а делал бы это в index.php, отдав ему всю строчку, как есть...
Спустя 8 часов, 4 минуты, 47 секунд (30.09.2008 - 20:40) Alchemist написал(а):
а местами правила менять не пробовали ? сначала те что для админа, потом те что для всех...
Спустя 1 день, 21 час, 30 минут, 33 секунды (2.10.2008 - 18:11) v3l0m написал(а):
спасибо большое всем за помощь....!
использовал RewriteCond
тему можна закрыть
использовал RewriteCond
тему можна закрыть
_____________
дайте тонну кофе, несколько цистерн с пивом и закусь - я напишу вам аффигенную cms'ку