Кратко проблема: при переходе на URL со слэшом на конце в URL 301 редиректа добавляется public и все ломается. Почему и как исправить?
Есть домен site.ru, в нем находится директория subdirectory, в ней находятся файлы laravel
В subdirectory .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
В subdirectory/public .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Internally rewrite Filament assets to prefixed path
RewriteRule ^subdirectory/css/filament/(.*)$ css/filament/$1 [L]
RewriteRule ^subdirectory/js/filament/(.*)$ js/filament/$1 [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Настроены роуты, например есть URL:
https://site.ru/subdirectory/categories/category1. Он корректно работает, но только пока открываю URL без слэша на конце. При переходе по URL
https://site.ru/subdirectory/categories/category1/ происходит редирект на версию без слэша (как и должно быть), но добавляется public и получается неверная ссылка
https://site.ru/subdirectory/public/categories/cat... Почему и как исправить?