У мене є наступний файл 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]