RewriteRule htaccess в другую папку но не показывать редирект
Изучаю редиректы htaccess.
Я хочу, чтобы перенаправляло из localhost/ravens/ на localhost/sites/ravens, но при этом не показывать директорию, то есть чтобы это было скрытно. То есть по запросу localhost/ravens/ должен на самом деле открываться localhost/sites/ravens/index.php.
Я пишу правило
RewriteEngine on
# Чтобы не было цикличного редиректа
RewriteCond %{REQUEST_URI} !sites/ravens
# Сам редирект
RewriteRule ravens sites/ravens
В итоге при запросе localhost/ravens перекидывает на localhost/sites/ravens/, но я ведь не поставил флаг R, ведь именно он должен делать текущую ситуацию. По идее.
Что я делаю не так?
Ответы (1 шт):
Потратив много часов на поиск решения в интернете я наткнулся на это: https://stackoverflow.com/questions/18361419/hide-directory-name-from-url
Немного подхимичив код я получил
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+sites/([^\s]+) [NC]
RewriteRule ^ %1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^sites/)^(.*)$ /sites/$1 [L,NC]
Теперь запрос localhost/ravens/ возвращает на самом деле localhost/sites/ravens/, при этом URL остаётся тотже.
Я переживал, что не подключатся стили, ведь раньше у меня получалось показывать localhost/sites/ravens/index.php по запросу localhost/ravens (без изменения URL на стороне клиента), но не подключались стили и другие ресурсы, которые имеют относительный адрес. А этот код перенаправляет видимо и все GET запросы для стилей, картинок и прочего.