【问题标题】:CFM redirect 301CFM 重定向 301
【发布时间】:2012-09-26 20:25:06
【问题描述】:

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

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

我想用 htaccess 对它们进行 301 重定向,但我没有尝试任何方法。

RewriteEngine On

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

任何想法,我已经尝试了很多变种,似乎问题出在 .cfm 文件上。

【问题讨论】:

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


    【解决方案1】:

    在 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 指出的那样,您没有说明要重定向到的位置,但这应该为您提供解决它的工具。

    【讨论】:

      【解决方案2】:

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

      那么我们可以整理出你的规则/条件。

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        • 谢谢,但是我没有cfm站点enywhere,站点不见了,我只需要新站点上的apache不要重定向同域名下的旧链接
        • 如果他们有 .htaccess 可用(工作的正确工具),建议在应用服务器上进行(不是工作的正确工具)是一个不好的建议。
        猜你喜欢
        • 1970-01-01
        • 2010-09-26
        • 1970-01-01
        • 2012-05-15
        • 2013-01-07
        • 2018-03-06
        • 2012-02-06
        • 2010-11-05
        • 2011-11-17
        相关资源
        最近更新 更多