You need to enable JavaScript to run this app. 如何在Apache中实现/url1/*到url2/moved.html的301重定向
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache中实现/url1/*到url2/moved.html的301重定向

适配需求的Apache重写规则配置

规则会严格限定作用范围,仅覆盖domain.name:9082下/url1/路径的所有请求,完全不干扰其他路径的正常访问,最终返回301永久重定向指向/url2/moved.html静态维护页。

方案1:直接在主VirtualHost配置中追加规则(推荐,性能更优)

你当前的配置已经在站点根目录的Directory块中开启了RewriteEngine和AllowOverride,不需要额外加载模块,直接在对应块中追加重写规则即可:

<Directory "/var/www/home">
  Require all granted
  RewriteEngine on
  AllowOverride all
  # 追加的核心重写规则
  RewriteRule ^url1(/.*)?$ /url2/moved.html [R=301,L]
</Directory>

规则参数说明:

  • 正则^url1(/.*)?$会精准匹配两类请求:站点根路径下的/url1本身、/url1/下的任意子路径/文件,不会误匹配/url1abc、/test/url1/xxx这类不符合预期的路径
  • R=301:强制返回301永久重定向响应码
  • L:标记规则为匹配后立即停止,命中规则的请求不会再触发后续其他重写逻辑

方案2:通过目录级.htaccess配置(隔离性更强,无需修改主配置)

因为当前配置开启了AllowOverride all,可以直接在/var/www/home/url1/目录下创建.htaccess文件,写入以下规则:

RewriteEngine On
RewriteRule ^.*$ /url2/moved.html [R=301,L]

这种方式的规则仅对url1目录下的请求生效,完全和站点其他路径隔离,不存在误伤风险。

配置后验证流程

  • 修改完主配置后先执行apachectl configtest检查语法,确认无报错后再重载Apache服务
  • 测试访问时注意带上监听端口9082,访问各类/url1开头的路径,确认均跳转到/url2/moved.html且返回301状态码
  • 访问其他路径(如/url2下的其他页面、站点根目录其他路径),确认访问不受重写规则影响

注意:不要在规则中额外编写全局匹配逻辑,避免重定向范围扩大到无关路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 08:06:10