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

У меня есть приложение в подпапке «subfolder» 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 внутрь «подпапки», но это не сработало.

1
задан 21 February 2017 в 17:22
1 ответ
 RewriteRule ^ (?! подпапка /).* подпапка / $ 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]
0
ответ дан 4 December 2019 в 05:11

Теги

Похожие вопросы