Laravel 5:与../public/ ..的链接有效,但不应该

时间:2019-02-14 10:29:49

标签: apache .htaccess laravel-5

我有一个大型的Laravel / VueJS应用程序。尽管还没有100%完成,但到目前为止,一切都按预期进行。此时,我唯一的问题是URL正在添加公用文件夹

mydoamin.com/public/the/rest/of/the/url

以及没有

mydoamin.com/the/rest/of/the/url

问题和答案 Avoid public folder of laravel and open directly the root in web server 没有太大的帮助。我相信这很简单,我在.htaccess文件中忘记了吗?

这是./rootfolder/.htaccess

的内容
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://myracediary.com/$1 [R,L]
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

My project

Google和其他搜索引擎已经抓取了这些URL,尽管我什至不知道它们的链接应该从何而来:

Google Result

其他信息

尽管.htaccess文件在我的本地开发环境(LAMPP)和生产服务器(Centos 6,Apache)中相似,但实际上我在我的本地环境中使用了带有附加/public/的路径来获取所需的404。文件夹,但不在生产环境中。

经过一番摸索,我发现带有附加公用文件夹的请求只是经过了根文件夹中的.htaccess文件。

我一直在尝试添加一个规则来重定向该公用文件夹中的.htaccess文件,如下所示:虽然没有成功

RewriteEngine On

# Handle redirects if public folder is defined
RewriteCond %{REQUEST_URI} ^public
RewriteRule ^public/(.*)$ https://myracediary.com/$1 [R=301,L]

1 个答案:

答案 0 :(得分:1)

好的,我花了一些时间来了解整个过程,但这是我解决的方法:

  1. 我将Apache配置中的DocumentRoot...myrootfolder更改为...myrootfolder/public,现在 避免完全打第一个.htaccess文件。
  2. 在公共文件夹的.htaccess文件中,我将HTTP添加到https重定向中,就像我最初遇到的问题一样。

结果:

尽管将带有公用文件夹的URL顺利重定向到没有URL的URL很好,但是当尝试打开混乱的URL时,我很高兴收到404错误。