从 URL 中删除公共的 4 种最佳方法。
如果您使用任何其他技巧从 URL 中删除公共,例如将 server.php 的名称更改为 index.php 并更改为核心文件路径。显然,不要那样做。那为什么 Laravel 不提供这样的解决方案,因为这不是正确的方法。
1) 在 Laravel 中使用 htaccess 从 URL 中删除 public
在根目录下添加.htaccess文件,无需公开即可访问网站
<ifmodule mod_rewrite.c>
<ifmodule mod_negotiation.c>
Options -MultiViews
</ifmodule>
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
</ifmodule>
2) 通过在本地创建虚拟主机来移除公众
我在这里演示 Window 操作系统。但我会尝试定义一个步骤,以便任何人都可以轻松地遵循该步骤。您也可以在 google 上针对特定操作系统进行研究。
第1步:进入C:\Windows\system32\drivers\etc\以管理员模式打开“hosts”文件。
第 2 步: 将以下代码添加到其中。在这里,我给你一个projectname.local域名demo的demo,你可以任意指定。只要让它在每个地方都保持不变。
127.0.0.1 projectname.local
第 3 步: 现在转到 C:\xampp\apache\conf\extra(xampp 用户和 wamp 用户 "C:\wamp\bin\apache\Apache2.4.4\conf\extra")并打开 "httpd-vhosts.conf" 文件。现在将以下代码添加到其中。
注意:根据您的项目更改文档根目录,并将您定义的域名添加到“主机”文件中。
<VirtualHost projectname.local>
ServerAdmin projectname.local
DocumentRoot "C:/xampp/htdocs/projectdir"
ServerName projectname.local
ErrorLog "logs/projectname.local.log"
CustomLog "logs/projectname.local.log" common
</VirtualHost>
第 4 步:最后但重要的一步是重新启动您的 Xampp 或 Wamp 并访问像 http://projectname.local 这样的 URL,您的 Laravel 将在没有公共 URL 的情况下响应。
3) 通过在 Laravel 中运行命令移除 public
如果您在本地工作,则无需执行任何操作,只需从终端或命令行工具运行以下命令即可。之后,您可以通过命令行提供的 URL 访问您的网站。
> php artisan serve
如果您愿意在特定 IP 上运行您的项目,那么您需要运行以下命令。如果您在 LAN 上工作,那么如果您想允许其他人从本地访问您的网站,那么您只需在按照命令运行 IP 地址后运行“ipconfig”,使用命令行检查您的 IP 地址。
> php artisan serve --host=192.168.0.177
如果您愿意在具有特定端口的特定 IP 上运行您的项目,那么您需要执行以下命令。
> php artisan serve --host=192.168.0.177 --port=77
4) 在托管服务器或 cpanel 上删除公众
项目完成后,您需要将项目托管在服务器上,然后您只需将域上的文档根目录设置为公用文件夹即可。检查下面的屏幕截图。
根据屏幕截图,如果您在 public_html 中没有任何项目文件夹,那么您只需将文档根目录设置为 "public_html/public"。
参考来自here