apache - 如何将所有流量重定向到除主页之外的新域
问题描述
因此,我试图将使用 htaccess 访问其他页面的流量从一个域重定向到一个新的子域,但我想将流量保持在那里的主页。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule ^/?$ "http\:\/\/newsubdomain\.domain\.com\/" [R=301,L]
这只是将所有内容重定向到新的子域。这就是我需要帮助的地方,我怎样才能保持来到 olddmain.com 主页的流量并将查询重定向到 olddomain/post 并让它们转到 newsubdomain.domain.com/post
谢谢
解决方案
这只是将所有内容重定向到新的子域。
不,它没有。(如果所有内容都被重定向,那么要么是其他东西在做,要么你看到的是缓存的重定向。)
发布的指令实际上与您尝试做的完全相反。这些指令仅重定向主页(即对文档根目录的请求)。
要重定向除主页之外的所有内容,您可以在.htaccess
文件顶部执行以下操作:
# Redirect everything except the homepage
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com [NC]
RewriteRule !^$ https://newsubdomain.domain.com%{REQUEST_URI} [R=301,L]
该RewriteRule
模式 !^$
匹配除根(空URL 路径)之外的所有内容。
您需要在测试前清除浏览器缓存。
首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。
补充说明:
RewriteRule
替换字符串(第二个参数)中不需要反斜杠转义冒号、斜杠和点- 这是一个“普通”字符串,而不是正则表达式。(这种不必要的转义是使用 cPanel 的“重定向”生成的典型尝试。)我认为这应该是 HTTPS,而不是 HTTP?
这两个条件(
RewriteCond
指令)可以合并为一个。
推荐阅读
- java - 从 JavaRdd 中删除以特定符号开头并后跟文本的行
- javascript - 拦截导出函数的输入和输出以在nodejs中进行调试
- python - 从多个数组创建 Python 复杂的嵌套字典
- javascript - 在 2 个样式表之间切换并使用本地存储保持用户偏好
- python - 如何创建 3 个具有相同名称的函数?
- spring - 当网关服务器受 csrf 保护并且请求内容类型为 application/x-www-form-urlencoded 时,spring 网关服务器失败
- php - 订单退款时如何访问woocommerce订单退款对象
- java - 在具有相同 id 的中央多对多关系表中的休眠中插入问题(它可以手动执行但不能自动执行)
- office365 - Viva 连接和 Microsoft 团队应用程序有什么区别
- perl - 当我打印哈希值时,不断得到类似 2/8HASH(0x73609f8) 的东西