Rumah > pembangunan bahagian belakang > tutorial php > ThinkPHP5.0 Linux Apache/Nginx重写URL配置

ThinkPHP5.0 Linux Apache/Nginx重写URL配置

不言
Lepaskan: 2023-04-02 20:42:02
asal
3581 orang telah melayarinya

这篇文章主要介绍了关于ThinkPHP5.0 Linux Apache/Nginx重写URL配置,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

  • 作者系统是Ubuntu,CentOS及其他linux发行版请自行变更
    PHP框架是ThinkPHP5.0,官方文档说的有些模糊,所以自行补充了一下
    有错误欢迎随时指出

可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考:

[Apache]

1.启用rewrite模块

2.sudo a2enmod rewrite 或者 sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

3.编辑配置文件/etc/apache2/apache2.conf,找到自己web根目录对应的位置

1

2

3

4

5

<Directory /var/www/>

Options Indexes FollowSymLinks

AllowOverride None

Require all granted

</Directory>

Salin selepas log masuk

4.将AllowOverride None 改为AllowOverride All

5.重启服务sudo service apache2 restart

6.把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下(默认已创建,如果没有自己创建)

1

2

3

4

5

6

7

8

<IfModule mod_rewrite.c>

Options +FollowSymlinks -Multiviews

RewriteEngine on

 

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

</IfModule>

Salin selepas log masuk

[Nginx]

在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx中配置转发规则实现,

编辑文件/etc/nginx/sites-available/default:

1

2

3

4

5

6

7

8

9

10

 server { // …..省略部分代码

   root /var/www/html;

   //找到这个模块,然后填入下面的配置

 }

  location / { // …..省略部分代码

   if (!-e $request_filename) {

   rewrite  ^(.*)$  /index.php?s=/$1  last;

   break;

    }

 }

Salin selepas log masuk

其实内部是转发到了ThinkPHP提供的兼容URL,利用这种方式,可以解决其他不支持PATHINFO的WEB服务器环境。

如果你的应用安装在二级目录,Nginx的伪静态方法设置如下,其中/tp5/public/是所在的目录名称。

1

2

3

4

5

location /tp5/public/ {

    if (!-e $request_filename){

        rewrite  ^/tp5/public/(.*)$  /tp5/public/index.php?s=/$1  last;

    }

}

Salin selepas log masuk

原来的访问URL:

1

http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]

Salin selepas log masuk

设置后,我们可以采用下面的方式访问:

1

http://serverName/模块/控制器/操作/[参数名/参数值...]

Salin selepas log masuk

如果你没有修改服务器的权限,可以在index.php入口文件做修改,这不是正确的做法,并且不一定成功,视服务器而定,只是在框架执行前补全$_SERVER['PATH_INFO']参数

$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI' ];

最后重启服务器

1

sudo service nginx restart

Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

Nginx中Location的配置方法

使用nginx在一台服务器部署多个Web Server

Atas ialah kandungan terperinci ThinkPHP5.0 Linux Apache/Nginx重写URL配置. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Masalah default.conf Nginx
daripada 1970-01-01 08:00:00
0
0
0
pelayan - Masalah aplikasi web konfigurasi Nginx
daripada 1970-01-01 08:00:00
0
0
0
mengimbangi beban nginx
daripada 1970-01-01 08:00:00
0
0
0
centos7 - Pengecualian NGINX berlaku
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan