Laravel 从本地主机上的 url 中删除 public
Laravel remove public from url on localhost
生产时我有域 http://xxxx.com
。
在根文件夹中,我添加了 .htaccess
:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/ [L,QSA]
</IfModule>
当我在浏览器中输入时:http://xxxx.com 有效。
与我机器上的 .htaccess
文件相同。我使用 XAMPP。它不起作用。当我输入:
http://localhost:8082/myfolder
我收到 404。当我输入时:
http://localhost:8082/myfolder/public
有效。
我的主机和本地机器上的 url 有什么区别?
对于第一个答案:
这是一个屏幕,也许我做错了什么(.htaccess
在根文件夹中),也许public文件夹中的.htaccess
是错误的:
这应该适合你:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteRule !^public/ public%{REQUEST_URI} [L,NC]
</IfModule>
您的规则存在问题,您正在检查以下条件:
RewriteCond %{REQUEST_URI} !^/public/
它实际上从 Web 根目录检查 URI /public
,但是您的网站位于本地的子文件夹中。这里 RewriteRule !^public/
将检查 public/
是否在当前目录上下文之后的开始处不存在,这在站点根目录和子目录中的工作方式相同。
同样,对于重写,请确保不要在 public/
之前使用 /
以允许它使用相对路径。
生产时我有域 http://xxxx.com
。
在根文件夹中,我添加了 .htaccess
:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/ [L,QSA]
</IfModule>
当我在浏览器中输入时:http://xxxx.com 有效。
与我机器上的 .htaccess
文件相同。我使用 XAMPP。它不起作用。当我输入:
http://localhost:8082/myfolder
我收到 404。当我输入时:
http://localhost:8082/myfolder/public
有效。 我的主机和本地机器上的 url 有什么区别?
对于第一个答案:
这是一个屏幕,也许我做错了什么(.htaccess
在根文件夹中),也许public文件夹中的.htaccess
是错误的:
这应该适合你:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteRule !^public/ public%{REQUEST_URI} [L,NC]
</IfModule>
您的规则存在问题,您正在检查以下条件:
RewriteCond %{REQUEST_URI} !^/public/
它实际上从 Web 根目录检查 URI /public
,但是您的网站位于本地的子文件夹中。这里 RewriteRule !^public/
将检查 public/
是否在当前目录上下文之后的开始处不存在,这在站点根目录和子目录中的工作方式相同。
同样,对于重写,请确保不要在 public/
之前使用 /
以允许它使用相对路径。