У меня есть веб-приложение в каталоге, предполагающее xyz
. Я пытаюсь перенаправить все запросы в подкаталог www
. Мой текущий код .htaccess:
RewriteEngine On RewriteRule (.*) /www/$1 [L]
Но, когда я посещаю http://example.com/xyz/some_url
запрос перенаправляется на http://example.com/www/some_url
а не на http://example.com/xyz/www/some_url
который я хочу.
Обновление: Извините, я забыл упомянуть каталог xyz, поскольку в моем случае, скорее всего, будет переименован. Таким образом, этот каталог не должен быть жестко закодирован в правиле перезаписи
Поместите это правило в /xyz/.htaccess
:
RewriteEngine On RewriteBase /xyz/ RewriteRule ^((?!www/).*)$ www/$1 [L,NC]
Если ваш DocumentRoot не содержит путь xyz
вам нужно указать в RewriteRule.
Например: RewriteRule (.*) /xyx/www/$1 [L]
Это должно работать или быть близким, я думаю:
RewriteEngine On RewriteBase / RewriteRule ^(.*)/([^/]+)$ $1/www/$2 [L]
Вам нужно удалить только листинг / переписать URL-адрес относительно текущей папки:
# /xyz/.htaccess RewriteEngine on RewriteRule (.*) www/$1 [L]
Это перепишет /xyz/foo
в /xyz/www/foo
.
Чтобы предотвратить перенаправление циклов, добавьте файл .htaccess
в подпапку www
например:
# /xyz/www/.htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
При необходимости отрегулируйте.