2015-10-14 37 views
1

问题的描述是非常具体的,但我不知道关于它的源Apache的别名/ PHP/Laravel古怪

  1. 该项目采用Laravel 5.1

  2. 我有我的计算机上的项目副本和远程服务器。本地服务器配置为使用VirtualHost从URL中删除/公开。在远程服务器上,项目位于子目录中。例如。 /项目。为了摆脱公众的,还有在httpd.conf和线路RewriteBase /project在/project/public/.htaccess别名

  3. 使用Laravel的分页机制时,就会出现这个问题:

    有链接到的网页页面导航。在本地机器上一切正常,但在远程服务器上点击链接,如URL为http://<server_ip>/project/navigationPage?page=N导致重定向到http://<server_ip>/navigationPage?page=N。当然会出现404错误。

问题是什么以及如何解决?

完整的.htaccess中/项目/公:

<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> 
+0

您可以发布您htaccess文件? –

+0

@JonLin是的。增加了 – acedened

+0

出于好奇,为什么不将VirtualHost的DocumentRoot指向公用文件夹? – blackpla9ue

回答

1

好了,问题是,在加入由分页程序链接斜线。链接看起来像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(); 
}