URL перезаписи .htaccess в подкаталог - PullRequest
10 голосов
/ 14 мая 2009

Каков лучший способ переписать что-нибудь ниже "/ some / subdir" в "/ some / subdir / projects", например из этого:

http://www.mydomain.com/some/subidr/test/

... на это:

http://www.mydomain.com/some/subdir/projects/test/

Я нашел похожий вопрос , но решение, похоже, не сработало в моем случае. Моя текущая попытка (которая, похоже, не работает):

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/projects/.*$
RewriteRule ^(.*)$ /projects/$1 [L]

РЕДАКТИРОВАТЬ: Я забыл упомянуть, что файл .htaccess должен находиться в / some / subdir, так как у меня нет прав на запись в веб-корень сервера.

Ответы [ 3 ]

11 голосов
/ 14 мая 2009

Вот решение, которое я наконец-то получил:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L]
6 голосов
/ 14 мая 2009

Попробуйте это правило в файле конфигурации .htaccess в корневом каталоге документов вашего сервера:

RewriteEngine on
RewriteRule !^some/subdir/projects(/|$) some/subdir/projects%{REQUEST_URI} [L]

Поскольку вы хотите использовать это правило в каталоге /some/subdir/, измените правило следующим образом:

RewriteRule !^projects(/|$) projects%{REQUEST_URI} [L]

И если вы хотите перенаправить любые запросы /some/subdir/projects/foobar на /some/subdir/foobar, поместите это правило выше предыдущего:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /some/subdir/projects[/?\s]
RewriteRule ^some/subdir/projects/?([^/].+)?$ /some/subdir/$1 [L,R=301]
1 голос
/ 14 мая 2009

Я бы использовал это:

RewriteEngine On
RewriteRule ^(/some/subdir)/(.*)$ $1/projects/$2

Это перенаправит /some/subdir/<anything> на /some/subdir/projects/<anything>.

Обратите внимание, что на самом деле ведущий / должен соответствовать началу URL, , если только у вас не установлено RewriteBase /.

...