URL-адрес .htaccess перезаписать в подкаталог
-
21-08-2019 - |
Вопрос
Как лучше всего переписать что-либо ниже «/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 /
установить где-нибудь.