Вопрос

Как лучше всего переписать что-либо ниже «/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, поскольку у меня нет доступа на запись к корневому веб-каталогу сервера.

Это было полезно?

Решение

Это решение, которое я наконец-то приступил к работе:

RewriteEngine On

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

Другие советы

Попробуйте это правило в файле конфигурации .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]

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top