nginx与apache服务url问题
程序员文章站
2022-05-11 16:04:29
...
问题描述
1. 最近在做自己的小博客,本地用的wamp集成环境,线上是lnmp。web框架使用的是thinkphp5.0.1,项目中有一个模块是front
,控制器Article
,分别有index
、lists
、show
方法。
2. tp框架中设置路由,如下所示
#front文章
'blog' => ['front/Article/index', [], []],
'a/:id' => ['front/Article/show', [], []],
'blogs' => ['front/Article/lists', [], []],
'blog/add' => ['front/Article/add', [], []],
'blog/edit/:id' => ['front/Article/edit', [], []],
3. 并且设置了index方法重定向至lists方法
public function index()
{
$this->redirect(Url::build('front/Article/lists', '', false));
}
4. 具体错误:在本地访问链接 1
http://www.ibala.top/blog
和链接 2
http://www.ibala.top/blog/
效果是一样的,均是跳转至链接 3
http://www.ibala.top/blogs
;当将项目迁移至线上时,就发现问题了,访问链接 2
时,却会跳转到 链接 4
http://www.ibala.top/index.php/blogs
5. 问题说明有些乱,朋友们可以解答我的遗憾吗?
nginx配置文件
server
{
listen 80;
#listen [::]:80;
server_name ibala.top www.ibala.top;
index index.html index.htm index.php;
root /home/wwwroot/ibala.top/public;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
## php配置,兼容thinkphp框架
location ~ .php {
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SERVER_PORT 80;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.ht
{
deny all;
}
## 禁止敏感文件的直接访问
location ~* \.(inc|bak|sql|lua|so|ini|conf)$ {
deny all;
}
access_log /home/wwwlogs/ibala.top.log;
}
回复内容:
问题描述
1. 最近在做自己的小博客,本地用的wamp集成环境,线上是lnmp。web框架使用的是thinkphp5.0.1,项目中有一个模块是front
,控制器Article
,分别有index
、lists
、show
方法。
2. tp框架中设置路由,如下所示
#front文章
'blog' => ['front/Article/index', [], []],
'a/:id' => ['front/Article/show', [], []],
'blogs' => ['front/Article/lists', [], []],
'blog/add' => ['front/Article/add', [], []],
'blog/edit/:id' => ['front/Article/edit', [], []],
3. 并且设置了index方法重定向至lists方法
public function index()
{
$this->redirect(Url::build('front/Article/lists', '', false));
}
4. 具体错误:在本地访问链接 1
http://www.ibala.top/blog
和链接 2
http://www.ibala.top/blog/
效果是一样的,均是跳转至链接 3
http://www.ibala.top/blogs
;当将项目迁移至线上时,就发现问题了,访问链接 2
时,却会跳转到 链接 4
http://www.ibala.top/index.php/blogs
5. 问题说明有些乱,朋友们可以解答我的遗憾吗?
nginx配置文件
server
{
listen 80;
#listen [::]:80;
server_name ibala.top www.ibala.top;
index index.html index.htm index.php;
root /home/wwwroot/ibala.top/public;
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}
## php配置,兼容thinkphp框架
location ~ .php {
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SERVER_PORT 80;
include fastcgi_params;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.ht
{
deny all;
}
## 禁止敏感文件的直接访问
location ~* \.(inc|bak|sql|lua|so|ini|conf)$ {
deny all;
}
access_log /home/wwwlogs/ibala.top.log;
}
可以参考这个:http://www.jb51.net/article/8...
不确定能用
估计是nginx配置的问题,给你个配置:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
推荐阅读
-
深入Apache与Nginx的优缺点比较详解
-
Linux下Tomcat与Apache Web服务器的整合
-
安装、配置和测试Windows,Apache,Informix与PHP服务器的分步指南_PHP教程
-
Windows下用Nginx配置https服务器及反向代理的问题
-
关于服务器环境有关问题.net与php
-
nginx url自动加斜杠及301重定向的问题
-
mysql/Java服务端对emoji的支持与问题解决方法详解
-
深入Apache与Nginx的优缺点比较详解_PHP
-
Java开发微博粉丝服务(1)——环境的搭建,开发接入与URL有效性验证
-
浅谈django url请求与数据库连接池的共享问题