You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除表单action链接中间的.php?实现指定URL格式改写

解决移除URL中间.php后缀的问题

要实现把 localhost/shopproject/MassUpload/create_excel.php/createExcel 改写为 localhost/shopproject/MassUpload/create_excel/createExcel,你需要调整Apache的mod_rewrite规则,下面是具体的配置步骤:

1. 确保mod_rewrite已启用

首先确认你的Apache服务器已经开启了mod_rewrite模块:

  • Linux服务器:通过a2enmod rewrite命令启用,之后重启Apache服务
  • Windows(XAMPP/WAMP):打开httpd.conf文件,取消注释LoadModule rewrite_module modules/mod_rewrite.so这一行,再重启服务

2. 配置.htaccess文件

在你的MassUpload目录下创建或修改.htaccess文件,添加以下规则:

RewriteEngine On
# 设置重写基础路径,根据你的项目实际部署位置调整
RewriteBase /shopproject/MassUpload/

# 外部重定向:把包含.php/的URL显示为去掉.php的版本
RewriteRule ^([^/]+)\.php/(.*)$ $1/$2 [R=301,L]

# 内部转发:当访问去掉.php的URL时,实际转发到带.php的文件处理
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.*)$ $1.php/$2 [L]

规则细节解释:

  • RewriteEngine On:开启URL重写功能
  • RewriteBase:指定重写的基础路径,确保规则在你的项目目录下精准生效
  • 第一条RewriteRule:匹配xxx.php/yyy格式的路径,将其永久重定向为xxx/yyy(R=301),让浏览器地址栏更新为干净的URL;L标记表示这是当前请求的最后一条规则,不再继续处理后续规则
  • 两条RewriteCond:排除实际存在的文件和目录,避免重写规则影响真实的静态文件(如图片、CSS)或文件夹访问
  • 第二条RewriteRule:当用户访问xxx/yyy时,服务器内部偷偷转发到xxx.php/yyy处理请求,浏览器地址栏始终保持干净的URL

3. 调整表单的action属性

最后,把你的表单action属性修改为新的URL:

<form action="localhost/shopproject/MassUpload/create_excel/createExcel" method="POST">
  <!-- 表单内容 -->
</form>

这样配置后,用户访问和提交表单时看到的都是去掉中间.php后缀的URL,同时服务器能正确处理原PHP文件的请求。

如果你的服务器是Nginx,对应的配置需要放在server块里,规则如下:

location /shopproject/MassUpload/ {
    # 外部重定向
    rewrite ^/shopproject/MassUpload/([^/]+)\.php/(.*)$ /shopproject/MassUpload/$1/$2 permanent;
    
    # 内部转发
    if (!-e $request_filename) {
        rewrite ^/shopproject/MassUpload/([^/]+)/(.*)$ /shopproject/MassUpload/$1.php/$2 last;
    }
}

内容的提问来源于stack exchange,提问作者rhog23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:08:18