我有一个经典的Larevel 5项目结构,我需要将所有请求重定向到public/
。
我在经典托管环境中,因此public/
是我的文档根目录的子文件夹。
我会想象它可以通过.htaccess完成,但我仍然需要弄清楚如何。有人可以帮忙吗?
由于
答案 0 :(得分:33)
有两种解决方案:
<强> 1。将.htaccess与mod_rewrite一起使用
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
<强> 2。您可以添加包含以下代码的index.php文件,并将其放在根Laravel文件夹(public_html文件夹)下。
<?php
header('Location: public/');
答案 1 :(得分:5)
这是another answer的摘录,也可以为您提供帮助。
-
修改您的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>
答案 2 :(得分:1)
您无需更改Laravel的默认 public / .htaccess 文件中的任何内容。
只需在与您的 public 文件夹相同的级别上创建一个新的 .htaccess ,然后向其中添加以下内容:
'14/01/2019 10:33:59 AM'
就这么简单!
答案 3 :(得分:1)
如果您使用 apache,请使用以下行将 .htaccess 文件添加到您的根目录:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
并确保您的 apache 重定向和重写模块工作正常。
您可以使用 vhost 将所有请求重定向到您的公共目录,并将 public 设置为项目的根目录。
答案 4 :(得分:0)
理想情况是将/home/user/public
作为/home/user/laravel/public
的符号链接。
答案 5 :(得分:0)
如果您使用cPanel,则:
1。转到文件夹: / var / cpanel / userdata / my_domain
2。编辑两个域: my.domain和my.domain_SSL
添加到文档根部分 / public :
documentroot:/ home / 用户 / public_html / public
3。重建Apache配置: / scripts / rebuildhttpdconf &&服务httpd重新启动