3

私は次の操作を行うためにIISのISAPI書き換えを使用しようとしている...Isapi Rewrite 301リダイレクトは404循環参照として解決しますか?

は私がSEOフレンドリーなURLがために(静かに)そうのようなアプリケーションフレンドリーなURLに変換必要があります。

RewriteRule ^/seo-friendly-url/ /test/index.cfm [I,L] 

シンプル十分な。

しかし、すでに友好的なバージョンにリダイレクトされるように、検索エンジンでインデックスされたURLも必要です(たとえば、301)。同様に:

RewriteRule ^/test/index.cfm /seo-friendly-url/ [I,R=301] 

これらはそれぞれ独立して動作します。しかし、両方の.iniファイルがあると、私は/ seo-friendly-url /ブラウザのアドレスバーに表示されますが、私は404を提供しています。(はい、/test/index.cfmは間違いなく存在します)

私はそれが循環参照のように見えますが、最初のルールはIISとアプリケーションの間のURLのみを書き換えます。リダイレクトはありませんので、Isapi Rewriteをもう一度起動しません。それとも私はそれについて間違っていますか?

私は、ISAPI書き換えのロギングを有効にしていると私は次のことを見ている:

HttpFilterProc SF_NOTIFY_PREPROC_HEADERS 
DoRewrites 
New Url: '/seo-friendly-url/' 
ApplyRules (depth=0) 
Rule 1 : 1 
Result (length 15): /test/index.cfm 
ApplyRules (depth=1) 
Rule 1 : -1 
Rule 2 : 1 
Result (length 18): /seo-friendly-url/ 
ApplyRules: returning 301 
ApplyRules: returning 1 
Rewrite Url to: '/seo-friendly-url/' 

誰もが任意のアイデアを得ましたか。

答えて

0

いくつかの試行錯誤を通して私はこれに対する解決策を考え出しました。

リダイレクトマッチは$記号を使用して、文字列の末尾にあることを指定します。

RewriteRule ^/test/index.cfm$ /seo-friendly-url/ [I,R=301] 

はリダイレクト一致文字列から自明異なる書き換えられたURLを確認します - この場合には不要の追加:「?」

RewriteRule ^/seo-friendly-url/ /test/index.cfm? [I,L] 
0

あなたはここに二つの異なる書き換えを持っていて、右

  1. 最初のものは、クライアントのユーザーエージェントで見たことはありませんそれを行う場合には動作するはずです。それは/友好的に要求し、あなたはそれを内部的に書き直して応答します。

  2. 2番目は本当に書き換えではなくリダイレ​​クトです。あなたはそれをクライアントに送り返し、/ seo-friendlyを再要求する - 私はあなたが[R = 301、L]を使用してこれが行の終わりであると言う必要があると思う - ちょうどそれを返すその)

+0

ドキュメントによれば、L - "リダイレクトルールは常に最後のルールです"という必要はありません。それでも私はLで試してみましたが、結果は同じです – stubotnik

+0

申し訳ありませんが、これはApacheのmod_rewriteとして誤解されています。 mod_rewrite用の.htaccessファイルにこのようなものがあり、うまく動作します。バグのようなものです。 –

関連する問題