Это наверное дубликат, заранее извиняюсь.

У меня немного напряженный момент, и мне нужна помощь с правилом перезаписи:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ /index.php?name=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)?$ /index.php?name=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)?$ /index.php?name=$3 [L]

В настоящее время мы переписываем один из наших сайтов именно так - пока у нас не возникла ошибка с 4 уровнями. Например. / о компании / люди / декан.

Я мог бы просто добавить еще одно правило, чтобы переписать 4-й уровень на индексную страницу - но есть ли хороший способ сделать это?

По сути, общий результат - когда запрашивается URL-адрес типа '/ a / b / c / d / e / f / g', он будет перезаписан на '/index.php?name=g' - или что-то последнее. элемент в URL-адресе.

0
verenion 24 Май 2013 в 14:13
Сопоставьте что угодно и направьте его на свой index.php, затем обработайте его на стороне PHP с помощью explode('/', $_GET['name'])
 – 
naththedeveloper
24 Май 2013 в 14:17
На самом деле это то, что я делаю, но я хотел держаться подальше от (. *)
 – 
verenion
24 Май 2013 в 14:51

1 ответ

Лучший ответ

Придерживайтесь конца анкера. Он должен поймать последний кусок после /:

RewriteRule .*/([a-zA-Z0-9_-]+)/?$ /index.php?name=$1 [L]
2
vmeln 24 Май 2013 в 14:18
Ах, это довольно элегантно для того, что он хочет, мило.
 – 
naththedeveloper
24 Май 2013 в 14:22