2014-01-14 2 views
1

Я пытаюсь переписать ссылки на моем сайте. Возможные ссылки до переписывания и то, что я хочу видеть, после переписывания:
/index.pl?mode=users&action=add - /users/add/
/index.pl?mode=streets&action=edit&id=7 - /streets/edit/7
/index.pl?mode=users&action=info&id=7 - /users/info/7
и т.д.mod_rewrite, как правильно переписать ссылки

.htaccess содержание:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !\.(jpe?g|gif|bmp|png|tiff|css|js)$ [NC] 
RewriteRule ^([A-Za-z0-9-]+)/((edit|delete|info))/([0-9]+)$ index.pl?mode=$1&action=$2&id=$3 [L] 
RewriteRule ^([A-Za-z0-9-]+)/((add))/?$ index.pl?mode=$1&action=$2 [L] 
RewriteRule ^([A-Za-z0-9-]+)/?$ index.pl?mode=$1 [L] 

/users/add/ или /street/add/ работают нормально, но ...

Проблемы:
/users/edit/xx - Я не могу принять ID в perl-скрипте. Зачем?
/users/info/xx - я не могу даже получить инфо раздела /?mode=users&action=info&id=7 страницы (он должен показывать пустую таблицу с неправильным ID

Btw ... Мой сайт имеет «переключатель» структура Я имею в виду, если режим является пользователями, то это. загрузите «users.pl», если режим = улицы загружаются «street.pl» и т. д. О 2-й проблеме - уверен, что у меня есть раздел информации на users.pl! И ссылка /?mode=users&action=info&id=7 работает отлично.

ps: добавлен php-tag потому что это не проблема «perl», но php равна perl, поэтому php-followers могут мне тоже помочь
pps: sry для моего не очень хорошего английского.

ответ

1

Вы слишком много скобок, что делает ваши обратные ссылки от за одним:

RewriteRule ^([A-Za-z0-9-]+)/(edit|delete|info)/([0-9]+)$ index.pl?mode=$1&action=$2&id=$3 [L] 
RewriteRule ^([A-Za-z0-9-]+)/(add)/?$ index.pl?mode=$1&action=$2 [L] 

Эти два правила слишком много круглых скобок вокруг ((edit|delete|info)) и ((add)) (хотя «добавить» не влияет, потому что $ 2 правильно обратные_связи Это).

+0

Правда. Ты прав. Totaly забыл об этом. Еще один вопрос: у меня есть раздел информации только в скрипте users.pl, улицах и других нет. Можно ли получить доступ к информации только с пользователями: '/ users/info/7' и ограничиться другими:'/streets/info/7' - не должно работать. Во всяком случае, может быть, вы можете как-то улучшить эти выражения? @Jon Lin –

+1

@SharikovVladislav Вам понадобится создать отдельное правило специально для шаблона '^ users/info/([0-9] +) $' и удалить «информацию» из более общего правила. –

+0

Вы снова правы. Спасибо! –

Смежные вопросы