2013-05-24 2 views
0

Возможно, это дубликат, извините заранее.URL-адрес перезаписи Htaccess - несколько уровней

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

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

Match ** ** ничего, и направить его на 'index.php' затем обработать его стороне PHP с' взрываются, $ _GET [ 'имя ('/' ']) ' – naththedeveloper

+0

Это на самом деле то, что я делаю, - но я хотел держаться подальше от (. *) – verenion

ответ

2

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

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

А, это довольно элегантно для того, что он хочет, приятно. – naththedeveloper

+0

Думаю, я слишком много усложнил этот путь. Спасибо чувак. – verenion