.htaccess Довольно переписать URL для страниц PHP в подпапке? - PullRequest
1 голос
/ 13 февраля 2012

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

http://www.mysite.com/public/

Я использую следующую перезапись для удаления папки public из видимых URL:

#rewrite the URL to display the subdirectory as the main directory for all links
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com
RewriteCond %{REQUEST_URI} !^/public
Rewriterule ^(.*)$ /public/$1 [L]

Это прекрасно работает, и все перенаправляет правильно. Тем не менее, я также хочу переписать некоторые динамические страницы, которые также находятся в подпапке «public», но у меня возникли проблемы с тем, чтобы какой-либо из найденных мной переписываний работал в сочетании с вышеуказанным правилом.

Например, с указанным выше правилом перезаписи подкаталога перейдите по URL-адресу, например:

http://www.mysite.com/item.php?id=1&name=item_name

... следует переписать в нечто вроде:

http://www.mysite.com/items/item_name

Мысли

1 Ответ

3 голосов
/ 13 февраля 2012
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteBase /

#rewrite the URL to display the subdirectory as the main directory for all links
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com$ [NC]
Rewriterule ^(?!public/|prints/)(.*)$ /public/$1 [L,NC]

RewriteCond %{THE_REQUEST} /*item\.php\?id=([^&]*)&name=([^&]*)\s [NC]
Rewriterule ^ /prints/%1/%2? [R,L,NC]

Rewriterule ^prints/([^/]*)/([^/]*)/?$ public/item.php?id=$1&name=$2 [L,NC,QSA]

PS: убедитесь, что у ваших статических включений, таких как css, js, images и т. Д., Есть абсолютный путь, а не относительный.

...