Если вы на самом деле с помощью URL-адреса, как /my_page.php?cat=14&p=1
и хотите, чтобы они были «отображаться» в /my_page/14/1
, то вам нужно два правила: один для перенаправления /my_page.php?cat=14&p=1
внешне /my_page/14/1
и один переписать /my_page/14/1
внутренне /my_page.php?cat=14&p=1
.
RewriteCond %{THE_REQUEST} ^GET\ /my_page\.php\?
RewriteCond %{QUERY_STRING} ^cat=([0-9]+)&p=([0-9]+)$
RewriteRule ^my_page\.php$ /my_page/%1/%2 [L,R=301]
RewriteRule ^my_page/([0-9]+)/([0-9]+)$ my_page.php?cat=$1&p=$2 [L]
Обратите внимание, что это правило работает только с этим конкретным URL (числом и порядком или параметрами). Более общее правило будет более сложным; использование языка более высокого уровня, такого как PHP, в этом случае, вероятно, проще.
Кроме того, было бы лучше, если вы уже используете «правильный» URL-адрес в своих HTML-документах, а не дважды перенаправляете/переписываете каждый запрос.
Извините, я не совсем понимаю, что вы пытаетесь сделать. Вы хотите, чтобы адресная строка * браузера * отображала '/ my_page/14/1' и * сервер *, чтобы увидеть' /my_page.php? Cat = 14 & p = 1' (что будет иметь смысл) или наоборот? – pjmorse
Я пытаюсь переписать URL-адрес ... Именно то, что я хочу ... Ты это сказал. – 2010-10-08 19:19:59
Вам нужно будет исправить ссылки в вашем 'index.html', после чего вы вернете правило перезаписи. – pjmorse