сайт modrewrite с косой чертой в .htaccess - PullRequest
0 голосов
/ 22 января 2012

Как я могу перевести URL как: http://localhost/mySite/?link=OFFERS&sublink=ARTICLE&subsublink=DETAIL

в: http://localhost/mySite/OFFERS/ARTICLE/DETAIL

, если один параметр пуст, он все равно должен работать так: localhost / mySite /? Link =ПРЕДЛОЖЕНИЯ и подссылка = АРТИКУЛ localhost / mySite / ПРЕДЛОЖЕНИЯ / СТАТЬЯ

Дополнительная проблема: в index.php есть страница ввода, и перезапись должна работать с index2.php.Лучше всего было бы, если бы он работал под локальным хостом и в реальной системе без изменений.

В настоящее время я использую: RewriteRule ^ ([^ /.] +) $ Index2.php? Link = $ 1 [L] Ноэто работает только для одного параметра, и я не мог улучшить этот код целую вечность ^^

Ответы [ 2 ]

0 голосов
/ 22 января 2012
RewriteRule ^([^/.]+)(/([^/.]+))?(/([^/.]+))?$ index2.php?link=$1&sublink=$3&subsublink=$5 [L,QSA]

Обратите внимание, что localhost/mySite/OFFERS/ARTICLE ссылается на localhost/mySite/?link=OFFERS&sublink=ARTICLE&sussublink=, а не localhost/mySite/?link=OFFERS&sublink=ARTICLE.Не должно быть большой проблемой, но убедитесь, что код PHP не использует isset($_GET['subsublink']).

0 голосов
/ 22 января 2012

Попробуйте добавить следующее в файл htaccess в каталоге mysite вашего сайта.

RewriteEngine on
RewriteBase /mysite/

# rewrite http://localhost/mySite/OFFERS/ARTICLE/DETAIL to
# http://localhost/mySite/?link=OFFERS&sublink=ARTICLE&subsublink=DETAIL
#assumes that index2.php is in the root directory of site
RewriteRule ^([-a-zA-Z0-9])+/([-a-zA-Z0-9])+/([-a-zA-Z0-9])+ index2.php?link=$1&sublink=$2&subsublink=$3 [NC,L]

#redirect index to index2
#if you do not want to redirect, just server rewrite, remove the R=301 below
RewriteRule ^index\.php$ index2.php [NC,L,R=301]
...