Перезапись URL, структурированный URL для единой точки входа - PullRequest
0 голосов
/ 09 июля 2011
RewriteEngine on

RewriteRule ^([a-zA-Z0-9-_]+)$ /index.php?mainp=$1&%{QUERY_STRING}
RewriteRule ^([a-zA-Z0-9-_]+)/$ /index.php?mainp=$1&%{QUERY_STRING}
RewriteRule ^([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+)$ /index.php?mainp=$1&subp=$2&%{QUERY_STRING}
RewriteRule ^([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+)/$ /index.php?mainp=$1&subp=$2&%{QUERY_STRING}
RewriteRule ^([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+)$ /index.php?mainp=$1&subp=$2&id=$3&%{QUERY_STRING}
...

Я не думаю, что это лучший способ написать это правило.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 июля 2011
RewriteRule ^([a-z0-9-_]+)/?$ /index.php?mainp=$1 [QSA,NC,L]
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)/?$ /index.php?mainp=$1&subp=$2 [QSA,NC,L]
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)/([a-z0-9-_]+)/?$ /index.php?mainp=$1&subp=$2&id=$3 [QSA,NC,L]
  1. Добавляя ? перед $, вы делаете конечный слеш необязательным, поэтому 1 из таких правил будет охватывать 2 ваших (строка 1 = 1 & 2; строка 2 = 3 & 4, строка 3 = 5 & 6 (6 нет в списке, но, думаю, оно существует))

  2. Я заменил &%{QUERY_STRING} на [QSA] флаг - делает то же самое (может даже считаться более удобным).

  3. Я также удалил A-Z из шаблонов и заменил флаг [NC] (NC = игнорировать регистр). Это делает все правила немного короче и, следовательно, немного легче для чтения.

...