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

无法用.htaccess移除URL中的index.php?page=,求排查解决

回答

现有规则的问题点:

  1. 代码1、3:未排除真实文件/目录,会导致图片、CSS等静态资源被错误重写;同时规则会触发无限循环,因为^(.*)$会匹配重写后的index.php请求。
  2. 代码2:重写参数写成了/page=$0,多了前置斜杠,导致PHP读取的$_GET['page']值带斜杠,和你定义的$definedPages不匹配;且同样存在循环问题。
  3. 代码4:第二个规则^([^/]+)/?$仅能匹配不含斜杠的单层级路径(如site1),像dir/site5这种多级路径完全无法匹配,自然无效。

正确的.htaccess配置

将以下代码放置在网站根目录的.htaccess文件中:

RewriteEngine On

# 永久重定向旧URL到新URL,提升SEO表现
RewriteCond %{THE_REQUEST} /index\.php\?page=([^&\s]+)\s [NC]
RewriteRule ^ /%1? [R=301,L,NE]

# 排除真实存在的文件和目录,避免静态资源被干扰
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 把请求路径作为page参数传递给index.php
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]

补充注意事项:

  • 确认Apache服务器已启用mod_rewrite模块。
  • 虚拟主机配置中需设置AllowOverride All,确保.htaccess文件生效。
  • 你的PHP代码中$definedPages数组需要包含所有允许访问的路径(比如site2、dir/site6),否则这些请求会被跳转到default.php。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:36:18