Как перенаправить все запросы на публикацию/папку в laravel 5
У меня есть классическая структура проекта Larevel 5, и мне нужно перенаправить все запросы на public/
.
Я нахожусь в классической среде хостинга, поэтому public/
является подпапкой моего корневого документа.
Я представлю, что это можно сделать через .htaccess, но мне все же нужно выяснить, как это сделать. Кто может помочь?
Спасибо
Ответы
Ответ 1
Существует два решения:
1. Использование .htaccess с mod_rewrite
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
2. Вы можете добавить файл index.php, содержащий следующий код, и поместить его под свою корневую папку Laravel (папка public_html).
<?php
header('Location: public/');
Ответ 2
Это выдержка из другого ответа, который также может помочь вам.
-
-
Измените свой public_html/.htaccess
, чтобы перенаправить все запросы в подпапку public
.
# public_html/.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect All Requests To The Subfolder
RewriteRule ^ /public
</IfModule>
-
Убедитесь, что у вас есть правильный public_html/public/.htaccess
(GitHub).
# public_html/public/.htaccess
<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>
Ответ 3
Идеальный сценарий состоит в том, чтобы иметь /home/user/public
как символическую ссылку из /home/user/laravel/public
.
Ответ 4
Вам не нужно ничего менять в стандартном общедоступном файле Laravel /.htaccess.
Просто создайте новый файл .htaccess в том же самом уровне публичной папку и добавьте следующее содержимое к нему:
DirectoryIndex index.php
RewriteEngine On
RewriteRule ^$ public/index.php [L]
RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
Так просто!
Ответ 5
Если вы используете cPanel, то:
1. Перейдите в папку: /var/cpanel/userdata/
2. Отредактируйте оба домена: my.domain и my.domain_SSL
Добавьте в раздел documentroot /public:
documentroot: /home/user/public_html/public
3. Перестройте конфигурацию Apache: /scripts/rebuildhttpdconf && service httpd restart