【发布时间】:2016-11-11 20:57:45
【问题描述】:
现在四天,我正在尝试制作一个 laravel 5.1 应用程序以在带有 nginx 的子目录中工作。从零开始,我取得了一些进展,但我现在被卡住了,因为 laravel 似乎不明白它属于一个子文件夹,并且除了“/”之外的每条路线都没有按预期工作。
我正在尝试了解是否因为 nginx conf 重写规则或 laravel 中的某些错误配置而发生这种情况。
首先是我的目录树:
/srv/http --> Web servers' root
/srv/http/finics --> Laravel's public folder (is a symlink to /srv/laravel/public)
这是 /finics 位置在 nginx 上的相应配置。
location /finics/ {
root /srv/http/;
try_files $uri $uri/ @laravel;
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_intercept_errors on;
}
}
location @laravel {
rewrite /finics/(.*)$ /finics/index.php?/$1 last;
}
location ~ \.css$ {}
location ~ \.js$ {}
}
对于重写规则和try_files,我已经尝试了本网站以及其他论坛(如数字海洋)上的所有建议。
其中一些是
try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /finics/index.php?$query_string;
rewrite ^/finics/(.*)$ /finics/index.php$query_string;
try_files $uri $uri/ /finics/index.php$is_args$args;
但它们都没有真正起作用。
所以问题是,正如我之前所说,只有 / (domain.net/finics/) 路由有效。如果我单击应用程序的菜单链接将我转移到加入,它会将我重定向到 domain.net/accessions 而不是 domain.net/finics/accessions。这就是为什么我写这似乎 laravel 不明白文档根属于哪个。当然,所有 POST 请求都会发生同样的事情。
有人告诉我解决方案可能很简单,但我不知道还能想什么。
如果有任何关于为什么会发生这种情况的想法以及可能修复它的提示,我将非常感激。
【问题讨论】:
-
如何建立链接?
-
你到底是什么意思?我的路线或 href 值?
-
创建链接的模板
-
<li><a href="/accessions"><span class="glyphicon glyphicon-chevron-right"></span> Accession list <span class="glyphicon glyphicon-list-alt pull-right"></span></a></li>
标签: php redirect nginx laravel-5 routes