Laravel 共享主机 .htaccess

Posted

技术标签:

【中文标题】Laravel 共享主机 .htaccess【英文标题】:Laravel Shared Hosting .htaccess 【发布时间】:2014-09-26 23:23:42 【问题描述】:

我正在尝试将 Laravel 项目部署到共享主机上,我已经设法完成了大部分艰苦的工作,但我无法在没有 Forbidden 问题的情况下剥离 /public 目录。

网站工作并显示这些链接的相同页面

www.mywebsite.com/test/index.php www.mywebsite.com/test/public/

但没有 /index.php 它返回 ->

Forbidden

You don't have permission to access /test/ on this server. 

目前我的 .htaccess 如下所示。

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule ^ public/index.php [L]

</IfModule>

有什么想法吗?

【问题讨论】:

所以www.mywebsite.com/test/public/ 有效但www.mywebsite.com/test/ 无效? www.mywebsite.com/test/index.php 虽然有效,但我认为我的 .htaccess 有问题 【参考方案1】:

test/.htaccess中试试这个规则:

DirectoryIndex index.php
<IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /test/

    RewriteRule ^$ public/index.php [L]

    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

</IfModule>

【讨论】:

感谢您的快速回复 :) 这种工作会在 index.php 显示网站时产生 NotFoundHttpException? 是的,但是 www.mywebsite.com/test/index.php 有效,而且 www.mywebsite.com/test/public 有效 未找到 - 在此服务器上未找到请求的 URL /test/index.php。 team-viewer 会更容易吗? 不幸的是又一样了。【参考方案2】:

这是我使用的魔法脚本(添加到public_html 中的.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

【讨论】:

谢谢。它对我有用。尝试了很多东西。没有任何效果。 如果在 web 服务器上它不工作,然后像这样添加 RewriteBase RewriteEngine On RewriteBase / RewriteRule ^(.*)$ public/$1 [L]【参考方案3】:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ public/index.php [L]
    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
</IfModule>

【讨论】:

这看起来与最佳答案非常相似。为什么要这样做?【参考方案4】:

这个脚本对我有用。

<IfModule mod_rewrite.c>
   RewriteEngine On
   # Force SSL
   RewriteCond %HTTPS !=on
   RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R=301]
   # Remove public folder form URL
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

【讨论】:

以上是关于Laravel 共享主机 .htaccess的主要内容,如果未能解决你的问题,请参考以下文章

laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行

将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误

使用 .htaccess 防止通过 /public/ 目录访问 Laravel [重复]

apache_conf Bedrock .htaccess共享主机

.htaccess 使用共享 ssl 证书

如何在 .Htaccess 中禁用/不允许共享主机 RewriteLog 时,在 Apache 2 中模拟和测试 URL 重写规则?