СОВМЕЩЕНИЕ РАЗНЫХ ЧПУ

Статус
В этой теме нельзя размещать новые ответы.

lordBlack

Мой дом здесь!
Регистрация
29 Ноя 2007
Сообщения
623
Реакции
267
тема на саммо деле очень и очень серьезная....

PHP:
#Юзеры
RewriteRule ^([_\ A-Za-z0-9-]+).html/?$ my.php?user=$1 [L,QSA]
#делает ссылки вида: http://сайт.ру/user.html

#галерея
RewriteRule ^([^.]+)$ /img/index.php [QSA]
#делает ссылки вида: http://сайт.ру/img/
#и все что внутри http://cайт.ru/img/gallery/1/11
#вообщем правило на протокол php

хочу добавить еще одно правило на создание виртуальной папки doc
PHP:
RewriteRule ^doc/?$ doc.php [L]


НО при ображещении Для просмотра ссылки Войди или Зарегистрируйся
меня выкидывает на папку Для просмотра ссылки Войди или Зарегистрируйся вернее открывает галерею....

да и вообще при попытке открытия всех папок ооткрывает теперь галерею...
Хорошо...пусть так... в ненужных папках прописал
РеврайтЕнджини ОФФ

НО...как исправить положение в виртуальных папках????
которые хочу создать.....
 
1. Вариант 1
Код:
RewriteRule ^([^.]+)$ /img/index.php [QSA]
Обрабатывает все запросы к сайту. Самые глобальные правила надо размещать ниже, чем конкретные. При чем конкретизированные правила желательно заканчивать аттрибутом L, чтобы дальнейшие правила к этому урлу уже не применялись. т.е. делать так
Код:
RewriteRule ^doc/?$ doc.php [L] 
RewriteRule ^([_ A-Za-z0-9-]+).html/?$ my.php?user=$1 [L,QSA]
RewriteRule ^([^.]+)$ /img/index.php [QSA]
2. Вариант 2
Явно указать правилу с img, что запросы имеющие в себе doc не обрабатывать
Код:
RewriteCond %{REQUEST_URI} !^/doc 
RewriteRule ^([^.]+)$ /img/index.php [QSA]
 
запуталсо:
есть 4 вида ссылок:

линк каталога статей:
/doc.php?cat=9
RewriteRule ^doc/(.*)/?$ doc.php?cat=$1 [L,QSA]
получаем на выходе /doc/9

далее подкаталог
/doc.php?cat=9&subcat=18
RewriteRule ^doc/(.*)/(.*) /doc.php?cat=$1&subcat=$2 [L,QSA]
по идее должно получитсо на выходе: /doc/9/18 и вывести содержимое подкаталога.... но он не хочет!

дальше еще веселее:
/doc.php?page=1&id=10&cat=9
/doc.php?page=1&id=10&cat=9&subcat=18

как реализовать правило на них ??????????
PHP:
/doc.php?cat=9 (каталог)
/doc.php?cat=9&subcat=18 (подкаталог)
/doc.php?page=1&id=10&cat=9 (статья вне каталога-подкаталога)
/doc.php?page=1&id=10&cat=9&subcat=18 (статья подчиненная подкаталогу)

запуталсо вообщем...
 
Код:
RewriteRule ^doc/(.*)/(.*)/(.*)/(.*)$ /doc.php?page=$1&id=$2&cat=$3&subcat=$4 [L]
RewriteRule ^doc/(.*)/(.*)/(.*)$ /doc.php?page=$1&id=$2&cat=$3 [L]
RewriteRule ^doc/(.*)/(.*)$ /doc.php?cat=$1&subcat=$2 [L]
RewriteRule ^doc/(.*)$ /doc.php?cat=$1 [L]
А надо ли вообще qsa? я не вижу необходимости
 
не работает. причем если закоментировать
RewriteRule ^doc/(.*)$ /doc.php?cat=$1 [L]
то второе правило начинает работать
RewriteRule ^doc/(.*)/(.*)$ /doc.php?cat=$1&subcat=$2 [L]

вот что вообще внутри htaccess
PHP:
php_value date.timezone "Europe/Moscow"
RemoveHandler .php .phtml .php3 .php4
RewriteEngine On
php_value memory_limit 25M
php_flag register_globals off


Options +FollowSymlinks
#профили
RewriteRule ^([_\ A-Za-z0-9-]+).html/?$ my.php?user=$1 [L,QSA]
#интересы
RewriteRule ^([\_A-Za-z0-9-]+)/(.*).html /my.php?user=$1&action=$2 [L,QSA]

#блоги
RewriteRule ^blog/?$ blogs.php [L]
RewriteRule ^blog/([_\ A-Za-z0-9-]+).htm /blogs.php?user=$1 [L,QSA]
RewriteRule ^blog/([_\ A-Za-z0-9-]+)/(.*).htm /blogs.php?user=$1&id=$2 [L,QSA]

#теория
RewriteRule ^doc/(.*)$ /doc.php?cat=$1 [L]
RewriteRule ^doc/(.*)/(.*)$ /doc.php?cat=$1&subcat=$2 [L]
RewriteRule ^doc/(.*)/(.*)/(.*)$ /doc.php?page=$1&id=$2&cat=$3 [L]
RewriteRule ^doc/(.*)/(.*)/(.*)/(.*)$ /doc.php?page=$1&id=$2&cat=$3&subcat=$4 [L]

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html

#галерея
RewriteRule ^([^.]+)$ /img/index.php [QSA]
 
Человек, ты издеваешься? я же сказал конкретные вопросы должны стоять выше чем более общие. Зачем ты поменял порядок правил которые я тебе написал? Читай манул по htaccess в каком порядке обрабатываются правила!
Хотя бы даже и тут
 
Все, я учел ошибки...и сразу все заработало.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху