nginx - 如何利用重新规则去掉URL 中 .php

【字号: 日期:2022-07-30浏览:58作者:雯心

问题描述

ThinkPHP 开启REWRITE模式时,如何利用 Apache 、Nginx 重写规则,去掉 http://www.example.com/api.php/user/info/1880233 中的的 .php变成 http://www.example.com/api/user/info/1880233

求 apache 和 nginx 的重写规则示例。

问题解答

回答1:

不好意思,之前没看清楚问题

Nginx:

location ~ .php { fastcgi_pass 127.0.0.1:9000; #根据实际情况修改 fastcgi_index index.php; includefastcgi_params; #这一段是让 Nginx 支持 PATH_INFO set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ '^(.+?.php)(/.+)$') { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info;}location / { if (!-e $request_filename) { rewrite ^/api/(.*)$ /api.php/$1 last; break; }}

Apache:还是参照这个链接里的介绍:http://doc.thinkphp.cn/manual/url_rewrite.html但把代码改成如下这样:

<IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^/api/(.*)$ api.php/$1 [QSA,PT,L]</IfModule>

并把.htaccess文件放到 api.php 的文件夹里

相关文章: