Laravel 5.2 路由仅适用于根目录

Posted

技术标签:

【中文标题】Laravel 5.2 路由仅适用于根目录【英文标题】:Laravel 5.2 routes work only on root directory 【发布时间】:2016-08-23 21:37:58 【问题描述】:

当 Laravel 安装在非根域的文件夹中时,我无法访问我的路由 (404)。

例如,如果我在根域中安装 Laravel 并添加路由anyroutes,我可以毫无问题地访问localhost/anyroutes

但是

如果我将 Laravel 安装在 localhost/project/ 之类的文件夹中并添加该路由:localhost/project/public/anyroutes 它会给我 404。我不得不提一下 localhost/project/public/index.php/anyroutes 会起作用。

我在早期版本的 Laravel 中没有这个问题。

我该如何解决这个问题?

Apache (XAMPP)、PHP 7、mod_rewrite 已启用并且...

更新:

.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>

apache 配置:

<Directory />
    Allowoverride All
   # AllowOverride none
    Require all denied
</Directory>


DocumentRoot "E:/projects"
<Directory "E:/projects">

    Options Indexes FollowSymLinks Includes ExecCGI

    AllowOverride All

    Require all granted
</Directory>

【问题讨论】:

你检查你的目录是否有正确的权限? @imrealashu 是的,没关系。你有这个问题还是只有我一个人有这个问题? 是的,我拥有它,但我更改了权限级别并且它起作用了。您使用的是哪个操作系统? windows、unix还是linux? @imrealashu Windows。在 Windows 中,我们通常不会遇到权限问题 .. 是的。你确定你在安装后完成了composer updatecomposer install 吗? 【参考方案1】:

这是我的.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]

【讨论】:

这个.htaccess 是针对早期版本的 Laravel。不是5.2。我尝试过这个。不幸的是,它没有用。 我什么都试过了,从来没有遇到过这样的事情,但有一次只是因为权限问题而已。

以上是关于Laravel 5.2 路由仅适用于根目录的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Laravel 中间件适用于单个路由而不适用于一组路由

JSON Web Token 仅适用于具有 Eloquent 模型的 Laravel

Laravel Route 模型绑定(slug)仅适用于 show 方法?

是否有仅适用于控制台应用程序的 laravel 版本? [关闭]

Summernote 编辑器未打开(laravel 5.2)

React 路由器仅适用于 / 路径