Laravel 7.x - 如何从 URL 中删除“公共”?
Posted
技术标签:
【中文标题】Laravel 7.x - 如何从 URL 中删除“公共”?【英文标题】:Laravel 7.x - How to remove 'public' from URL? 【发布时间】:2020-08-31 11:56:53 【问题描述】:坚持了很长时间。我发现了类似的问题,但没有一个答案对我有用! 根文件夹中的 .htaccess 如下所示:
RewriteEngine On
RewriteCond %REQUEST_URI !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]
【问题讨论】:
为什么不'[你使用默认的 Laravel htaccess 文件?github.com/laravel/laravel/blob/master/public/.htaccess @KarlHill 我尝试了默认文件,但仍然无法正常工作!我是否也必须更改公用文件夹中的 htaccess 文件? 【参考方案1】:在根目录下创建一个名为“.htaccess”的文件并添加以下代码。就是这样
RewriteEngine On
RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^ ^$1 [N]
RewriteCond %REQUEST_URI (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ server.php
【讨论】:
它在 laravel 8.x 版本中工作。谢谢。 它使用 Laravel 8 工作 :) 谢谢!【参考方案2】:示例here 位于/public 目录中。您还需要正确配置您的服务器,并让它只查看 /public 目录而不是根目录。您不需要根目录中的 .htaccess 文件。
您将需要一个 httpd-vhosts.conf,内容如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName yourapp.com
ServiceAlias www.yourapp.com
DocumentRoot /var/www/yourapp/public
</VirtualHost>
注意这一行:
DocumentRoot /var/www/yourapp/public
您可以阅读有关 Laravel 网络服务器配置的更多信息here.
【讨论】:
【参考方案3】:在你的主 .htaccess 里面应该是这样的:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %REQUEST_URI !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
如果存在类似的内容,请替换现有的“ RewriteRule ^(.*)$ public/$1 [L] ”。
【讨论】:
以上是关于Laravel 7.x - 如何从 URL 中删除“公共”?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 laravel 5 中的 url 中删除 public/index.php?
如何以正确的方式从 laravel 5 url 重写或删除 public?
通过删除 Laravel 中的多余字符,从斜杠分隔的 url 中提取参数值