在Google上我有一个网站,其网页上有一堆旧链接,它们就是这样的链接。
/mainpage.cfm?linkId=84&LinkType=mainlink
我想301用htaccess重定向它们,但我没有尝试任何工作。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/architectural
RewriteRule .* /mainpage.cfm?linkId=84&LinkType=mainlink
任何想法,我尝试了很多这样的变种,似乎问题是.cfm文件。
答案 0 :(得分:0)
你的问题有点模糊。你说你想要从 /mainpage.cfm?linkId=84&LinkType=mainlink
重写,但是你也可以将它作为你的RewriteRule的目标。所以我认为某些电线在某处交叉。您能否请更新您的问题,以包括“我想将[此当前网址示例]重写为[您希望第一个结束的网址]”。还有可能需要RewriteCond的任何其他注意事项,以及模式的任何变化。
然后我们可以整理您的规则/条件。
要回答您提出的确切问题,您的RewriteCond会拒绝/mainpage.cfm?linkId=84&LinkType=mainlink
,因为这与^/architectural
不符。
但是我怀疑这是不你想问的问题......
答案 1 :(得分:0)
RewriteRule只能看到URI的目录和文件部分,而不能查看查询字符串。因此,要匹配查询字符串,您需要使用RewriteCond。
e.g。
RewriteCond %{QUERY_STRING} linkId=(\d+)&LinkType=mainlink [NC]
RewiteRule ^mainpage\.cfm newpage.php?linkid=%1 [NC,L]
我已经在RewriteCond中匹配了linkId,然后我在RewriteRule中引用了%1,因为这是RewriteCond中匹配组的语法。
正如@AdamCameron所指出的那样,你没有说明你想要重定向到哪里,但这应该会为你提供恢复它的工具。
答案 2 :(得分:-1)
您可以在ColdFusion页面中执行重定向。只需将以下行添加到mainpage.cfm文件的顶部(假设您希望重定向该页面的每个请求)。如果您只想根据网址参数重定向特定的linkId
和/或LinkType
,则可以添加一些条件逻辑。
同样,如果您希望对mainpage.cfm的每个请求都重定向,只需将其添加到该文件的顶部(注意,您需要更改重定向页面的网址):
<cflocation url="http://host/architetural" statusCode="301" addtoken="no">
在ColdFusion 8中添加了statusCode属性 - 所以你必须运行那个或更新的