/ / htaccess Перезапишіть два кореневі каталоги - php, apache, .htaccess, перенаправлення, mod-rewrite

htaccess Перезаписати два підкаталоги до root - php, apache, .htaccess, redirect, mod-rewrite

У мене є наступний файл htaccess:

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/site/v1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/v1/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ site/v1/ [L]

Тож коли я отримую доступ до будь-якого domain.com або www.domain.com, Я пряму до domain.com/site/v1, без /site/v1 частина, що відображається в браузері.

Але моя проблема полягає в тому, що всередині site/v1 папка, там є admin папку, що містить CMS веб-сайту, і коли я отримую доступ domain.com/admin, він перенаправляє на domain.com/site/v1/admin, з /site/v1 частина відображається в браузері.

Отже, моє запитання полягає в тому, як я можу отримати доступ до /site/v1/admin папку без відображення всього шляху, тобто, коли я отримую доступ domain.com/admin, він має доступ до підпапки, але не відображає його?

В іншому форматі я маю:
- Я отримую доступ domain.com/about
- На стороні сервера я фактично є domain.com/site/v1/about
- У моєму браузері я бачу domain.com/about
- ps: about ось параметр передається моєму бек-енду через директиву RewriteCond (на іншому фрагменті коду), не будучи папкою (але він працює так само добре, як і з папкою)

Що у мене теж є:
- Я отримую доступ domain.com/admin
- На стороні сервера я фактично є domain.com/site/v1/admin
- У моєму браузері я бачу domain.com/site/v1/admin

Що я хочу:
- Останній пункт до цього був "Я бачу domain.com/admin"

Дякую!

РЕДАГУВАТИ

Ось мій повний файл htaccess після змін:

# force ssl
RewriteEngine on
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/site/v1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/v1/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^admin/$ /site/v1/admin/ [L]
RewriteRule ^(/)?$ site/v1/ [L]

Відповіді:

0 для відповіді № 1

Простий спосіб переписати базовий URL - це нам таке правило переписати.

RewriteRule ^$ /site/v1/ [L]

Щоб вирішити проблему каталогу адміністратора, просто додайте та додаткове правило, як це.

RewriteRule ^admin/$ /site/v1/admin/ [L]