【发布时间】:2017-07-27 04:44:07
【问题描述】:
您好,我遇到了在 url 中设置 public 的漂亮 url 的问题,但它对我不起作用。
我已经试过了
Laravel 5.2 Pretty URLs, Laravel 5 - Remove public from URL
还有更多类似的网址,但似乎对我没有用。
我正在使用 wamp,Windows 8
我已确保 mod_rewrite 已打开,并且工作正常。
这是我在 root 上的 htaccess。
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
我的 htaccess 在公用文件夹内的测试中
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
我也尝试将公用文件夹中的 htacess 粘贴到根文件夹中,并从公用文件夹中删除了一个,但它不起作用
实际上发生的错误是我的路由文件跳过了所有模式,如果我有类似 Route::get('/api/login', 'api@login') 的东西,那么它确实适用于包含公共但当我从 url 中删除 public 时,所有模式都被跳过。它显示 404
我确保所有请求都到达 public/index.php,而神秘的是当我打印时
var_dump(Request::root());
在 routes.php 中,对于带有 public 的 url,它显示为 http://localhost/folderName/subFolderName/public,但对于没有 public 的 url,它显示为 http://localhost/,我认为这就是我在路由文件中的模式不起作用的原因。
附:我设置了标题pretty urls laravel 5.4 而不是laravel routes not working,因为我认为它是.htaccess,我需要正确配置它才能使其正常工作。
我不想更改文件夹结构,因为我相信这是有原因的,应该有一些解决方法。
关于设置虚拟主机,我无法在服务器上执行此操作(因为我没有权限)所以没有使用在本地设置虚拟主机作为登录运行中的解决方法,我必须解决这个问题。
【问题讨论】:
标签: php .htaccess mod-rewrite laravel-5.4