CFM重定向301

时间:2012-10-05 16:25:28

标签: .htaccess redirect coldfusion http-status-code-301

在Google上我有一个网站,其网页上有一堆旧链接,它们就是这样的链接。

 /mainpage.cfm?linkId=84&LinkType=mainlink

我想301用htaccess重定向它们,但我没有尝试任何工作。

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/architectural
RewriteRule .* /mainpage.cfm?linkId=84&LinkType=mainlink

任何想法,我尝试了很多这样的变种,似乎问题是.cfm文件。

3 个答案:

答案 0 :(得分:0)

你的问题有点模糊。你说你想要从 /mainpage.cfm?linkId=84&LinkType=mainlink重写,但是你也可以将它作为你的RewriteRule的目标。所以我认为某些电线在某处交叉。您能否请更新您的问题,以包括“我想将[此当前网址示例]重写为[您希望第一个结束的网址]”。还有可能需要RewriteCond的任何其他注意事项,以及模式的任何变化。

然后我们可以整理您的规则/条件。

要回答您提出的确切问题,您的RewriteCond会拒绝/mainpage.cfm?linkId=84&LinkType=mainlink,因为这与^/architectural不符。

但是我怀疑这是你想问的问题......

答案 1 :(得分:0)

mod_rewrite中的

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属性 - 所以你必须运行那个或更新的