我想在 htaccess 中设置从一个域到另一个域的重定向,但我在某处出错了



我有一个网站,比方说fruit.com,目前我设置了一组重定向,效果很好,所以例如fruit.com/apples/mcintosh将重定向到fruit.com/apples.php?id=mcintosh

我以前也设置了一些重定向,允许我使用短URL,所以fru.it/mcintosh会重定向到fruit.com/apples.php?id=mcintosh

到目前为止还不错。然而,几年前,我的短域名失效了,我没有续费。最近我再次购买了它,我很有兴趣重新获得相同的设置。

不过,现在从短域到主域的重定向不起作用,尽管我使用了完全相同的代码,所以我有点不知所措。

RewriteCond %{HTTP_HOST} ^www.fru.it$
RewriteRule ^([0-9]+)$ "http://www.fruit.com/apples.php?id=$1" [R=301,L]

尽管我使用了完全相同的代码

但是您发布的代码不会重定向所述的示例URLfru.it/mcintosh,因为代码只匹配数字,而不匹配字母。

请尝试以下操作:

RewriteCond %{HTTP_HOST} ^www.fru.it
RewriteRule ^(w+)$ http://www.fruit.com/apples.php?id=$1 [R=301,L]

w简写字符类匹配大小写字母、数字和下划线。

您不需要替换字符串中的所有反斜杠转义。

还要记住,这些指令的顺序可能很重要。此规则可能需要接近.htaccess文件的顶部,以避免冲突。

首先使用302(临时(重定向进行测试,以避免潜在的缓存问题。测试前清除浏览器缓存。


旁白:

fruit.com/apples/mcintosh将重定向到fruit.com/apples.php?id=mcintosh

这将是一个(内部(";重写";,而不是(外部的(";重定向";?然后,短代码将重定向到fruit.com/apples/mcintosh,而不是fruit.com/apples.php?id=mcintosh

最新更新