我有一个网站,比方说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
?