Передача переменных типов через mod-rewrite - PullRequest
1 голос
/ 23 августа 2009

Здравствуйте, у меня возникла проблема с htaccess mod_rewrite, возможно, кто-то здесь может указать в правильном направлении.

мой сайт имеет 1 основной файл [index.php]. Вся навигация осуществляется путем передачи переменных в строке URL, например

index.php?page=about

это работает нормально с моим .htaccess [ниже]

domain.com/about

на некоторых страницах есть вторая переменная, например,

index.php?page=event&eventID=42

это также работает с .htaccess ниже

domain.com/event/42

Моя проблема в том, что у меня есть другие страницы, для которых тоже нужны переменные, например

index.php?page=news&newsID=4
domain.com/news/42

index.php?page=map&venueID=4
domain.com/map/42

Возможно ли это сделать?

Заранее спасибо

ки

.htaccess

Options +FollowSymLinks

RewriteEngine On

RewriteRule ^([^/\.]+)/*$ /index.php?page=$1 [L]
RewriteRule ^([^/\.]+)/*([^/\.]+)/*$ /index.php?page=$1&eventType=$2 [L]

Ответы [ 2 ]

3 голосов
/ 23 августа 2009

Конечно, просто сделай

RewriteRule ^([^/\.]+)/*$ /index.php?page=$1 [L]
RewriteRule ^event/([^/\.]+)/*$ /index.php?page=event&eventType=$1 [L]
RewriteRule ^news/([^/\.]+)/*$ /index.php?page=news&newsID=$1 [L]
RewriteRule ^map/([^/\.]+)/*$ /index.php?page=map&venueID=$1 [L]
1 голос
/ 23 августа 2009

Попробуйте эти правила:

RewriteRule ^([^/.]+)/?$ /index.php?page=$1 [L]
RewriteRule ^map/([^/.]+)/?$ /index.php?page=map&venueID=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)/?$ /index.php?page=$1&$1ID=$2 [L]

Вашим /map/… URL-адресам необходимо отдельное правило, поскольку параметр URL-адреса не mapID, а venueID. Но остальное должно быть охвачено третьим правилом. Но было бы проще, если бы вы вызывали параметр ID просто id.

...