0

私には3つの「ルール」があります。1 つは URL が小文字であることを確認するもので、もう 1 つはディレクトリの末尾にスラッシュを含めるもので、3 つ目はindex.htmlページへのアクセスを強制的にディレクトリ経由にするものです。

私がどのように持っているかの問題は、これが複数の 301 リダイレクトを引き起こしている場合があることです。各ルールが順番に適用され、必要に応じて最終的な URL にリダイレクトされることを本当に望んでいます。たとえば、URL を小文字に変換し、スラッシュを追加する必要がある場合があります。または、小文字にして、 index.htmlからディレクトリに変更する必要がある場合もあります。

どうすればこれを行うことができますか?どうもありがとう。

ルールは以下のとおりです。

#LOWERCASE URLS For Directories, aspx, html files
RedirectRule ^/(.*[A-Z].*(/|\.html|\.aspx))$  /#L$1#E [R=301]


#ADD SLASH TO DIRECTORIES
#---------------------------------------------
#Perm Redirect If:
#Starts w/ Forward Slash
#Match Any Characters Except (. or ?) 1 or more times
#End w/ someting besides a dot, ?, or slash
#If So, Perm Redirect captured piece W/ Slash At End and at front
RedirectRule ^/([^.?]+[^.?/])$ /$1/  [I,R=301]


#CHANGE INDEX.HTML REQUESTS TO DIRECTORY REQUESTS
#---------------------------------------------
RedirectRule ^/(.*)/index\.html$ /$1/  [I,R=301]
4

3 に答える 3

1

この質問に対する優れた回答がIIRF Forums にあります。

于 2010-04-04T04:14:40.440 に答える
0

残念ながら、IIRF フォーラムでの回答は、複数のリダイレクトの問題を解決していません。各ルールは引き続き独自のリダイレクトを引き起こします。

RedirectRule の代わりに RewriteRule [リダイレクト フラグなし] を使用すると、IIRF ステータスでエラーがスローされます。

# rule:
# force HTTPS [disable on dev site until port 80 and port 443 served by same site]
# after rewrite continue with remaining tests
RewriteCond %{HTTPS}    off
RewriteRule ^/(.*)$ https://www.example.com/$1 [NC]

エラー: C:\Inetpub\wwwroot\example-com\www\Iirf.ini(26): 警告: 完全修飾 URL に書き換えています。おそらく間違っています。RedirectRule または ProxyPass が必要になる場合があります。

IIRF がこのルールの結果を取得し、IIRF ルールを介して再度送信し、途中で他の URL の変更を取得し、最終的に単一の 301 リダイレクトをブラウザーに送信して最終結果をすべて書き直し。[N] フラグは、私が理解していることから、mod_rewrite でこれを行います。

于 2016-09-08T20:53:22.663 に答える
0

後者の 2 つを組み合わせる機会しかないと思います。

RedirectRule ^/([^A-Z?]*[A-Z].*(/|\.html|\.aspx))$  /#L$1#E [R=301]
RedirectRule ^/([^.?]+?[^.?/])(/index\.html)?$ /$1/ [I,R=301]
于 2009-11-19T14:48:37.387 に答える