parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Правильная адресная строка с mod_rewrite

Mizter Egoist 23.10.2015 14:49 / 23.10.2015 14:59

Здравствуйте всем!
У меня следующая проблема, пишу панель администрирования. В панели ссылки идут вот такие:
/admin/sections?id=123&do=edit
/admin/sections?id=123
/admin/sections
/admin
(Кроме sections есть много других страниц)
Кроме панели администрирование есть обычные страницы:
/cat/subcat/post
/cat/subcat
/cat

Привожу мой файл .htaccess
DirectoryIndex index.html

Options -Indexes

AddHandler parsed-html html
Action parsed-html /cgi-bin/parser3.cgi

<Files ~ "\.(p|cfg)$">
Order allow,deny
Deny from all
</Files>

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond	%{REQUEST_FILENAME} !^favicon\.ico

RewriteCond	%{REQUEST_FILENAME} !-f
RewriteCond	%{REQUEST_FILENAME} !-d
RewriteRule	^admin\/(.*)\/?$	/bulk/admin/?section=$1 [L,QSA]

RewriteCond	%{REQUEST_FILENAME} !-f
RewriteCond	%{REQUEST_FILENAME} !-d
RewriteRule	^admin\/?$	/bulk/admin/$1 [L,QSA]

RewriteCond	%{REQUEST_FILENAME} !-f
RewriteCond	%{REQUEST_FILENAME} !-d
RewriteRule	^(.*)\/(.*)\/(.*)/?$	/?url=$1&uri=$2&pid=$3 [L,QSA]

RewriteCond	%{REQUEST_FILENAME} !-f
RewriteCond	%{REQUEST_FILENAME} !-d
RewriteRule	^(.*)\/(.*)/?$	/?url=$1&uri=$2 [L,QSA]

RewriteCond	%{REQUEST_FILENAME} !-f
RewriteCond	%{REQUEST_FILENAME} !-d
RewriteRule	^(.*)\/?$	/?url=$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>
В панели администрирования есть ссылки:
/admin/sections
/admin/headings
/admin/entries
/admin/goods
/admin/groups
/admin/users
/admin/subscribers
/admin/counter

Проблема в том, что часть ссылок направляет на страницу, а остальная часть отправляет на:
/bulk/admin/?section=goods

Хочу сделать так, когда ты в пределах /admin, то .htaccess направляет по заданной странице и передает параметры
$form:section
$form:id
$form:do
а когда ты за пределами /admin, то обрабатывает адреса уже другой обработчик и передает параметры в
$form:url
$form:uri
$form:pid
Сайт у меня базируется на следующем:
rights.p:
@page_rules[]
^switch[$get.auth.gID]{
	^case[1]{
		^admin.page[]
	}
	^case[DEFAULT]{^deafult.page[]}
}

@sidebar_rules[]
^switch[$get.auth.gID]{
	^case[1]{
		^admin.sidebar[]
	}
	^case[DEFAULT]{^deafult.sidebar[]}
}
control.p:
^switch[$form:section]{
	^case[sections]{
		^sections[]
	}
	^case[headings]{
		^headings[]
	}
	^case[entries]{
		^entries[]
	}
	^case[goods]{
		^goods[]
	}
	^case[groups]{
		^groups[]
	}
	^case[users]{
		^users[]
	}
	^case[subscribers]{
		^subscribers[]
	}
	^case[counter]{
		^counter[]
	}
	^case[DEFAULT]{
		Deafult
	}
}
Если неправильно объяснил суть проблемы, то вот в двух словах:
В админке есть ссылка /admin/entries, когда на нее нажимаешь, приходишь не на /admin/entries, а на /bulk/admin/?section=entries, но это не всегда, часть ссылок направляет на нужную страницу, как исправить.

/UPD/
Изменил произвольно ссылки на
/admin/sect
/admin/hea
/admin/en
/admin/go
/admin/gro
/admin/us
/admin/subsc
/admin/coun
и теперь все правильно переходит, не отправляет на страницу /bulk/admin/?section=
Не могу понять причину этого явления