0

在谷歌上,我有一个网站有一堆旧链接到它的页面,它们是这样的链接。

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

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

RewriteEngine On

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

任何想法,我已经尝试了很多这种方法,看来问题出在 .cfm 文件上。

4

3 回答 3

0

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

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

要按要求回答您的确切问题,您的 RewriteCond 将拒绝/mainpage.cfm?linkId=84&LinkType=mainlink,因为它不匹配^/architectural

但是我怀疑这不是您要问的问题...

于 2012-10-05T18:59:54.970 回答
0

在 mod_rewrite RewriteRule 中只能看到 URI 的目录和文件部分,而不能看到查询字符串。因此,要匹配查询字符串,您需要使用 RewriteCond。

例如

RewriteCond %{QUERY_STRING}            linkId=(\d+)&LinkType=mainlink [NC]
RewiteRule ^mainpage\.cfm              newpage.php?linkid=%1 [NC,L]

我已经匹配了 RewriteCond 中的 linkId,然后我在 RewriteRule 中通过 %1 引用它,因为这是在 RewriteCond 中匹配组的语法。

正如@AdamCameron 指出的那样,您没有说明要重定向到的位置,但这应该为您提供解决它的工具。

于 2012-10-06T10:26:21.513 回答
-1

您可以改为在 ColdFusion 页面中执行重定向。只需将以下行添加到 mainpage.cfm 文件的顶部(假设您希望重定向该页面的每个请求)。如果您只想重定向特定linkId和/或LinkType基于 URL 参数,则可以添加一些条件逻辑。

同样,如果您希望对 mainpage.cfm 的每个请求都进行重定向,只需将其添加到该文件的顶部(注意,您需要更改重定向页面的 url):

<cflocation url="http://host/architetural" statusCode="301" addtoken="no">

在 ColdFusion 8 中添加了 statusCode 属性 - 因此您必须运行该属性或更新版本

于 2012-10-05T16:53:01.127 回答