Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4.2尾部斜杠导致基本uri_Php_Laravel - Fatal编程技术网

Php Laravel 4.2尾部斜杠导致基本uri

Php Laravel 4.2尾部斜杠导致基本uri,php,laravel,Php,Laravel,我有一个问题,我仍然无法解决。 我知道这里也有类似的问题,但这些都不起作用 我使用restful控制器。 当我访问http://localhost/project/public/subsite它可以工作。 但是当我访问http://localhost/project/public/subsite/它将我重定向到http://localhost/subsite 这是我当前的.htaccess文件: <IfModule mod_rewrite.c> <IfModule mo

我有一个问题,我仍然无法解决。 我知道这里也有类似的问题,但这些都不起作用

我使用restful控制器。 当我访问
http://localhost/project/public/subsite
它可以工作。 但是当我访问
http://localhost/project/public/subsite/
它将我重定向到
http://localhost/subsite

这是我当前的.htaccess文件:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L] </IfModule>

选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
我已经尝试过这些问题的解决方案:


但问题仍然是一样的。

尝试添加重写库:

RewriteEngine on
RewriteBase /project/public/
基本上,当您在重写行中指定开始斜杠时:

#                   V----- This little guy
RewriteRule ^(.*)/$ /$1 [L,R=301]
它说“转到这个URL,从根开始”。因为你的根是
http://localhost
,它从那里开始,而不是从项目的根目录开始

RewriteBase /project/public/

RewriteRule ^(.*)/$ $1 [L,R=301]

对我来说,省略克丽德指的斜杠很有效。还要确保清除浏览器缓存,否则更改可能不会生效。

“这是我当前的htdocs文件”-我想你是说
.htaccess
文件吧?文件夹结构中的
.htaccess
文件在哪里?哦,是的,对不起,我的意思是.htaccess文件-它存储在/project/public/中,这就是问题所在-当您在.htaccess上下文中配置重写时,当重写规则开始工作时,.htaccess目录的路径已从请求URI中剥离–因此您的
^(.*)/$
首先只在
子网站上匹配。看看预先配置一个
RewriteBase
是否可以解决这个问题(我自己也不完全确定)。我已经在问题中提到的其他问题中这样做了,但问题仍然存在。为什么不让webroot指向公用文件夹?