перенесенная система с новыми URL - PullRequest
6 голосов
/ 02 февраля 2012

Я переключаю систему с MVC на систему с пользовательским кодом.В настоящее время мы используем этот формат для URL:

index.php?part=CAPACITOR&type=CERAMIC&model=0805&page=spec

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

mysitecom/CAPACITOR/
mysitecom/CAPACITOR/CERAMIC/
mysitecom/CAPACITOR/CERAMIC/0805/spec.html#2

, где # 1 и # 2 - страницызагружен в jquery.Разработчик использует старый способ, используя /index.php/CAPACITOR/CERAMIC/0805/spec.html

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

1 Ответ

7 голосов
/ 02 февраля 2012

Вот что вам нужно использовать

RewriteEngine On
RewriteBase /

RewriteRule ^([a-z0-9\-_]+)/?$ index.php?part=$1&type=all&model=all&page=index [L,NC]
RewriteRule ^([a-z0-9\-_]+)/([a-z0-9\-_]+)/?$ index.php?part=$1&type=$2&model=all&page=index [L,NC]
RewriteRule ^([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_]+)/?$ index.php?part=$1&type=$2&model=$3&page=index [L,NC]
RewriteRule ^([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_]+)/([a-z0-9\-_\.]+)\.html$ index.php?part=$1&type=$2&model=$3&page=$4 [L,NC]

Поэтому, когда папка (например, CERAMIC) не предоставлена, вы можете добавить флаг для загрузки всех, та же идея для модели.Это означает, что если указана только первая часть, то будет использоваться первое правило.Начиная с page.html по умолчанию, вы можете загрузить индекс.

Теперь a-z0-9\-_ означает ТОЛЬКО любые буквы, цифры, тире и подчеркивание.Вы можете использовать ([^/]+), если вы предпочитаете, что позволит вам использовать больше символов.

L означает last, означающее, что если правило соответствует, оно остановится.NC означает не регистр, поэтому A = a или ABC = abc.

...