Мод переписать проблему - PullRequest
0 голосов
/ 11 марта 2009

У меня проблема в том, что я не могу обернуть голову.

Я использую Apache и PHP

Мне нужно получить:

http://localhost.com/cat_ap.php?nid=5964

от

http://localhost.com/cat_ap~nid~5964.htm

Как мне изменить это? Я сделал более простой мод, переписывает, но это немного сложнее. Может ли кто-нибудь поднять мне ногу или направить меня в правильном направлении

Ответы [ 3 ]

4 голосов
/ 11 марта 2009
RewriteRule ^/cat_ap~nid~(.*)\.htm$ /cat_ap?nid=$1 [R]

[R] в конце не является обязательным. Если вы его опустите, Apache не будет перенаправлять ваших пользователей (он все равно будет отображать правильную страницу).

Если часть nid также является переменной, вы можете попробовать это:

RewriteRule ^/cat_ap~([^~]+)~(.*)\.htm$ /cat_ap?$1=$2 [R]

РЕДАКТИРОВАТЬ: Как сказал Бен Бланк в своем комментарии, вы можете захотеть ограничить набор действительных URL-адресов. Например, вы можете убедиться, что nid существует и что он числовой:

RewriteRule ^/cat_ap~nid~([0-9]+)\.htm$ /cat_ap?nid=$1

или если nid-часть является переменной, то она состоит только из буквенных символов:

RewriteRule ^/cat_ap~([A-Za-z]+)~([0-9]+)\.htm$ /cat_ap?$1=$2
1 голос
/ 11 марта 2009

Предполагая, что переменными частями здесь являются "nid" и 5964, вы можете сделать:

RewriteRule ^/cat_ap~(.+)~(.+).htm$ ^/cat_ap?$1=$2

Первое «(. +)» Соответствует «nid», а второе «5964».

0 голосов
/ 11 марта 2009

Если вы хотите, чтобы все было произвольно:

RewriteRule ^/(\w+)~(\w+)~(\w+)\.htm$ $1?$2=$3 [L]

Где \w равно [A-Za-z0-9_]. И если вы хотите использовать это правило в файле .htaccess, удалите начальный / из шаблона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...