2013-10-01 3 views
0

Я пытаюсь следующие переписывает.htaccess переписать строку произвольной запрос

1. http://domain.cm/app/user/view?group=3&userid=34 to http://domain.cm/app/user/view/group/3/userid/34

2. http://domain.com/app/class/edit?classid=13 to http://domain.com/app/class/edit/classid/13

ли это может быть достигнуто с одним правилом? У меня есть много таких URL-адресов, которые нужно переписать и создание одного правила для каждого выглядит очень избыточным.

ответ

0

Нет, вам нужны отдельные правила (по крайней мере, для приведенных примеров).

0

Вы могли бы попробовать что-то вроде этого, хотя это может быть немного слишком нетерпелив, чтобы соответствовать ничего:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^app/([^/]+)/([^/]+)/([^/]+)/([^/]+)/(?:([^/]+)/|)(?:([^/]+)/?|)$ /app/$1/$2?$3=$4&$5=$6 [L,QSA] 

Это делает так, если вы запрашиваете что-то вроде:

http://domain.com/app/class/edit/classid/13 

вы получить содержимое по адресу

/app/class/edit?classid=13 

Это c хэндл целых 6 путей узлов, так:

http://domain.com/app/a/1/b/2/c/3 

получит направляются:

/app/a/1?b=2&c=3 

Для еще больше, просто добавьте еще один (?:([^/]+)/|)(?:([^/]+)/?|) перед $ и &$7=$8 в конце этого правила в цель.

+0

Спасибо, однако я пытаюсь переписать только URL. Мое приложение использует URL-адреса с строкой запроса, и теперь мне нужно изменить, как они отображаются в адресной строке браузера. – nilobarp

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