0

Google には、そのページへの古いリンクがたくさんあるサイトがあります。それらは次のようなリンクです。

 /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

mod_rewrite の RewriteRule は、クエリ文字列ではなく、URI のディレクトリとファイルの部分のみを表示できます。したがって、クエリ文字列と一致させるには、RewriteCond を使用する必要があります。

例えば

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

これは RewriteCond でグループを一致させるための構文であるため、RewriteRule で %1 によって参照する RewriteCond で linkId を一致させました。

@AdamCameronが指摘しているように、リダイレクト先を指定していませんが、これにより、リダイレクトを解決するためのツールが提供されるはずです。

于 2012-10-06T10:26:21.513 に答える
0

あなたの質問は少しあいまいです。から 書き換えたいと言っています/mainpage.cfm?linkId=84&LinkType=mainlinkが、それをRewriteRuleのターゲットとして持っています。だから、どこかでワイヤーが交差していると思います。質問を更新して、「[この現在の URL の例] を [最初の URL にしたい URL] に書き換えたい」という内容を含めてください。また、RewriteCond を必要とする可能性のあるその他の考慮事項、およびパターンのバリエーション。

次に、ルール/条件を整理します。

尋ねられたとおりの正確な質問に答えるために、 RewriteCond は/mainpage.cfm?linkId=84&LinkType=mainlink一致しないため拒否します^/architectural

しかし、これはあなたが尋ねたい質問ではないと思います...

于 2012-10-05T18:59:54.970 に答える
-1

代わりに、ColdFusionページ内でリダイレクトを実行できます。mainpage.cfmファイルの先頭に次の行を追加するだけです(そのページのすべてのリクエストをリダイレクトする必要があると仮定します)。linkId特定のリダイレクトのみを行う場合やLinkTypeURLパラメータに基づいてリダイレクトする場合は、条件ロジックを追加できます。

繰り返しますが、mainpage.cfmへのすべてのリクエストをリダイレクトする場合は、これをそのファイルの先頭に追加するだけです(リダイレクトされたページのURLを変更する必要があることに注意してください)。

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

statusCode属性はColdFusion8で追加されたため、それ以降を実行する必要があります

于 2012-10-05T16:53:01.127 に答える