我有一个像这样的文件夹结构:
.cpanel/
public_html/
public_ftp/
..
和public_html目录中的laravel项目如下:
app/
bootstrap/
public/
vendor/
composer.json
artisan
..
问题在于,当我输入www.example.com这样的网址时,它会重定向到www.example.com/public。
我找到了一条重写规则,允许我放入www.example.com,只显示public/index.php
而没有“/ public”部分:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subfolder/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subfolder/index.php [L]
它适用于索引页面,但当我尝试转到任何路由时,“/ public”会在URL中显示备份。
为什么此重写规则适用于索引页而不适用于任何路由?什么重写规则适用于从URL中删除“/ public”的所有页面?
答案 0 :(得分:0)
在您的本地环境中,将public重命名为public_html
将项目复制到父文件夹,以便laravel公用文件夹现在是public_html
.cpanel/
app/
bootstrap/
vendor/
composer.json
artisan
public_html/
public_ftp/
..
不要试图用.htaccess来捏造它,因为你会将.env文件暴露在你的服务器根文件夹中。如果你这样做,这是一个很大的安全问题。
答案 1 :(得分:-1)
这应该有效: