Я пытаюсь удалить public
папка из моего URL.
Я уже пытаюсь найти ответ, но не повезло, довольно похожий вопрос этот а также этот.
Вот деталь моей среды разработки:
Когда я настраиваю свой сертификат домена с помощью Let’s Encrypt, он генерирует файл конфигурации Apache, который автоматически перенаправляет любой запрос с http
в https
называется le-redirect-example.com.conf
как показано ниже
<VirtualHost _default_:80>
ServerName example.com
ServerAlias *.example.com
ServerSignature Off
Redirect permanent / https://example.com
RewriteEngine On
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]ErrorLog /var/log/apache2/redirect.error.log
LogLevel warn
</VirtualHost>
У меня есть несколько приложений Laravel в качестве подпапки под /var/www/html
корень документа, внутри /var/www/html
уже есть .httaccess
которые настраивают перенаправление содержимого следующим образом:
Options -Indexes
RewriteEngine on
RewriteBase /
...
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/example.com
RewriteRule ^(.*)$ example.com/public/$1 [L]
...
Я опустил нерелевантные строки.
Мой полный путь к приложению Laravel:
/var/www/html/example.com
Последний .htaccess
файл находится внутри example.com/public/
содержание следующим образом:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Последний .httaccess
файл — это файл vanilla из проекта Laravel, никаких изменений не сделано.
Итак, вот в чем дело, когда я ввожу
http://example.com
он будет перенаправлен на
https://example.com/example.com/public
Я надеюсь, что когда я введу
http://example.com
он будет просто перенаправлен на
https://example.com
Я уже пытаюсь поставить это правило
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
на этих файлах, но не повезло.
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …