Назад | Перейти на главную страницу

Использование RewriteRule только для определенной подпапки / проекта

У меня есть приложение в подпапке «подпапка» Apache, поэтому я могу использовать URL-адрес, например: https://example.com/subfolder/#/v2/login вместо того https://example.com/#/v2/login.

У меня в .htaccess файл в моей папке htdocs:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^(?!subfolder/).* subfolder/$0 [L,NC]

Проблема в том, что он выполняет перезапись даже для корневого URL-адреса моего сервера; например, если я пойду в https://example.com/, Я вижу домашнюю страницу своего приложения во «подпапке». Я хотел бы, чтобы эти правила перезаписи применялись только к приложению во «подпапке».

Я также пробовал поставить .htaccess файл внутри «подпапки», но он не работает.

RewriteRule ^(?!subfolder/).* subfolder/$0 [L,NC]

Чтобы исключить только корневой URL (в .htaccess) вы можете изменить RewriteRule шаблон для соответствия 1 или более (.+) символов вместо 0 или более (.*) которые у вас есть сейчас:

RewriteRule ^(?!subfolder/).+ subfolder/$0 [L,NC]

В качестве альтернативы, чтобы исключить все файлы, которые существуют в корне сайта (или где-либо еще, если на то пошло), включите два дополнительных условия:

RewriteBase /subfolder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!subfolder/).+ $0 [L,NC]