我想将subdomain.olddomain.com中未使用的所有链接重定向到newdomain.com 我试过这个,但它似乎不适用于子域
RewriteCond %{HTTP_HOST} !^subdomain\.olddomain\.com [NC]
RewriteRule ^/(.*) http://www.newdomain.com/$1 [L,R=301]
我设法制作下面的代码,但问题是它不会重定向或捕获所有未使用过的代码。它只重定向根并在访问未使用的链接时返回页面错误(例如标记)示例网址如下所示(OsCommerce)
sub.domain.com/product_info.php?products_id=999&osCsid=29f8a9504d1c4de90a1a1e4106344280
RewriteCond %{HTTP_HOST} !^www\.newdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
其他信息: 我要做的是将来自subdomain.olddomain.com的所有链接重定向到newdomain.com,例如当有人访问subdomain.olddomain.com/tags/vanilla或subdomain.olddomain.com/product_info.php?products_id= 999& osCsid = 29f8a9504d1c4de90a1a1e4106344280m它们将自动重定向到newdomain.com,newdomain.com位于另一台服务器服务器
答案 0 :(得分:0)
来自the documentation(强调我的):
每个目录重写
- 重写引擎可能会在.htaccess文件和部分中使用,但会有一些额外的复杂性。
- 要在此上下文中启用重写引擎,您需要设置“RewriteEngine On”并且必须启用“Options FollowSymLinks”。如果 您的管理员已禁用了对FollowSymLinks的覆盖 用户的目录,然后你不能使用重写引擎。这个 出于安全原因需要限制。
- 在.htaccess文件中使用重写引擎时,每个目录前缀(对于特定目录始终是相同的)是 自动删除RewriteRule模式匹配和 在任何亲戚之后自动添加(不是以斜线或 协议名称)替换遇到规则集的结尾。见 有关前缀的更多信息,请参阅RewriteBase指令 加回相关替换。
- 如果您希望匹配每个目录(htaccess)RewriteRule中的完整URL路径,请使用%{REQUEST_URI}变量 的RewriteCond。
- 删除的前缀始终以斜杠结尾,这意味着匹配对于从不具有前导斜杠的字符串。因此,一个 模式与^ /永远不会匹配每个目录上下文。
- 虽然在语法上允许重写规则和部分(包括它们的正则表达式对应物), 这应该永远不是必需的,也是不受支持的。一个可能的特征 在这些背景下突破是相对替代。
.htaccess文件是每个目录的上下文,因此您的规则永远不会匹配任何内容。您的规则应如下所示:
RewriteCond %{HTTP_HOST} !^subdomain\.olddomain\.com [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]
这假设newdomain.com不使用此.htaccess文件,因为这会导致无限重定向。