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

修改.htaccess代码实现URL参数传递与友好URL重定向

修正后的.htaccess规则实现两种URL访问需求

以下是适配你需求的完整.htaccess代码:

RewriteEngine ON
RewriteBase /

# 外部重定向:直接访问app/views下的php文件时,重定向到根目录对应路径
# 单独处理acessorios.php,重定向到期望的accessories.php
RewriteCond %{THE_REQUEST} \s/app/views/acessorios\.php\s [NC]
RewriteRule ^ /accessories.php? [R=301,L]

# 处理其他php文件的外部重定向
RewriteCond %{THE_REQUEST} \s/app/views/([^.]+\.php)\s [NC]
RewriteCond %1 !=acessorios.php
RewriteRule ^ /%1? [R=301,L]

# 内部重写:处理路径式友好URL
# 匹配 /accessories/[id]
RewriteRule ^accessories/(\d+)/?$ /app/views/acessorios.php?id=$1 [QSA,L]
# 匹配 /accessories/[id]/[name]
RewriteRule ^accessories/(\d+)/([^/]+)/?$ /app/views/acessorios.php?id=$1&name=$2 [QSA,L]
# 匹配 /accessories/[id]/[name]/[image]
RewriteRule ^accessories/(\d+)/([^/]+)/([^/]+)/?$ /app/views/acessorios.php?id=$1&name=$2&image=$3 [QSA,L]

# 内部重写:处理带查询参数的标准URL(accessories.php -> acessorios.php)
RewriteRule ^accessories\.php$ /app/views/acessorios.php [QSA,L]

# 保留原有的其他php文件内部重写规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+\.php)/?$ /app/views/$1 [QSA,L]

规则说明

  • 外部重定向:

    • 若直接访问/app/views/acessorios.php,将301重定向到根目录的/accessories.php,统一对外URL形式。
    • 其他/app/views/xxx.php的访问,依旧重定向到/xxx.php,维持原有功能。
  • 路径式友好URL映射:

    • 三条规则分别匹配不同层级的路径:
      • /accessories/数字:提取id参数,内部指向/app/views/acessorios.php?id=数字
      • /accessories/数字/名称:提取id和name参数,内部指向/app/views/acessorios.php?id=数字&name=名称
      • /accessories/数字/名称/图片名:提取id、name、image参数,内部指向对应带参的acessorios.php
    • 所有规则带QSA标记,确保额外的查询参数也能被传递。
  • 标准带参URL映射:

    • 根目录的/accessories.php(无论带多少查询参数),内部直接映射到/app/views/acessorios.php,保留所有参数。
  • 原有规则兼容:

    • 保留了原有的非文件、非目录的PHP文件重写规则,不影响其他页面的正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:20:27