apachealias/PHP/Laravel-oddity
问题描述非常具体,但我不知道其来源apachealias/PHP/Laravel-oddity,php,apache,.htaccess,laravel,Php,Apache,.htaccess,Laravel,问题描述非常具体,但我不知道其来源 本项目采用Laravel 5.1 我的计算机和远程服务器上有一个项目副本。本地服务器配置为使用VirtualHost从URL中删除/public。在远程服务器上,项目位于子目录中。例如/项目。为了摆脱public,在httpd.conf中有一个别名,在/project/public/.htaccess中有一行RewriteBase/project 使用Laravel的分页机制时出现问题: 在带有导航的页面中有指向页面的链接。在本地机器上一切正常,但在远程服务器
RewriteBase/project
http:///project/navigationPage?page=N
导致重定向到http:///navigationPage?page=N
。当然,会出现404错误<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /project
# 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]
</IfModule>
选项-多视图
重新启动发动机
后勤基地/项目
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
好的,问题出在分页器添加到链接的斜杠上。林克看起来像http:///project/navigationPage/?page=N,但必须看起来像http:///project/navigationPage?page=N (没有斜杠)。通过编辑AbstractPaginator的url函数修复了错误:
public function url($page)
{
if ($page <= 0) {
$page = 1;
}
$parameters = [$this->pageName => $page];
if (count($this->query) > 0) {
$parameters = array_merge($this->query, $parameters);
}
return rtrim($this->path, '/').'?'
.urldecode(http_build_query($parameters, null, '&'))
.$this->buildFragment();
}
公共函数url($page)
{
如果($page pageName=>$page];
如果(计数($this->query)>0){
$parameters=array\u merge($this->query,$parameters);
}
返回rtrim($this->path,'/')。?'
.urldecode(http_build_query($parameters,null,&'))
.$this->buildFragment();
}
您可以发布您的htaccess文件吗?出于好奇,为什么不将VirtualHost的DocumentRoot指向公用文件夹?