2010-10-08 2 views
1

У меня есть ссылка на мой index.html:.htaccess RewriteRule помощь

href="my_page.php?cat=14&p=1"; 

Теперь, как я могу переписать это так, что это выглядит следующим образом:

/my_page/14/1 

меня это до сих пор , но я не знаю, как добавить окончание '/ 1' к этому:

RewriteRule ^kategori/([0-9_]+)$ browse_cat.php?cat_gr=$1 [NC] 

Благодаря

+0

Извините, я не совсем понимаю, что вы пытаетесь сделать. Вы хотите, чтобы адресная строка * браузера * отображала '/ my_page/14/1' и * сервер *, чтобы увидеть' /my_page.php? Cat = 14 & p = 1' (что будет иметь смысл) или наоборот? – pjmorse

+0

Я пытаюсь переписать URL-адрес ... Именно то, что я хочу ... Ты это сказал. – 2010-10-08 19:19:59

+0

Вам нужно будет исправить ссылки в вашем 'index.html', после чего вы вернете правило перезаписи. – pjmorse

ответ

2

У вас нет apache, установленных здесь дома, но это должно сделать трюк.

RewriteRule ^kategori/([0-9_]+)(?:/(0-9]+))?$ browse_cat.php?cat_gr=$1&p=$2 [NC] 

(?: ...)? делает вторую часть опциональной. Так/kategori/14, а также/kategori/14/1 должны работать.

Если нет, то вам нужно два правила

RewriteRule ^kategori/([0-9_]+)$ browse_cat.php?cat_gr=$1 [NC] 
    RewriteRule ^kategori/([0-9_]+)(?:/(0-9]+))?$ browse_cat.php?cat_gr=$1&p=$2 [NC] 
0
ReWriteCond {%REQUEST_URI} ^/my_page/([0-9]*)/([0-9]*) 
ReWriteRule .* /my_page.php?cat=%1&p=%2 [NC,L] 

Это будет работать только если обе кошки и р, как минимум указаны.

0

Если вы на самом деле с помощью 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-документах, а не дважды перенаправляете/переписываете каждый запрос.