web.config.NETファイルについてはよくわかりません。最後に使用したのは4年前です。したがって、.htaccessファイルの機能を順を追って説明することから始めます。私は、どのように行われたかではなく、何が行われたかに焦点を当てています^([^.?]+。つまり、のろい文句のように見える のような多くの表現については説明しません。
それは長い答えなので、コーヒーを飲みましょう。
最初の 3 行から始めましょう。
RewriteMap mapfile1 txt:maps/map_categories.txt
RewriteMap mapfile2 txt:maps/map_products.txt
RewriteMap lower int:tolower
ファイルまたはホスト構成のRewriteEngine onどこかにありますか?.htaccess
RewriteMap次のように、以下のルールで使用できるマッピングを設定します${mapfile1:argument}。map_categories.txtサブディレクトリにとmap_products.txtの2 つのファイルが必要ですmaps。あなたのアプリケーションがこれらのテキスト ファイルを更新すると想像できます。3 番目のマッピングは、大文字を小文字に変換します。
#FIX the trailing slash
RewriteRule ^([^.?]+[^.?/])$ $1/ [R=301,L]
コメントは本当です。を持っているとしましょう。http://example.com/productこれは( ) にリダイレクトされます。HTTP 301 Moved Permanentlyhttp://example.com/product/
#Define the rules for the CATEGORY pages
RewriteCond %{URL} ^(?!/(cms|cms/.*)$)
RewriteCond %{URL} ^(?!/(vadmin|vadmin/.*)$)
RewriteCond %{URL} ^(?!/(bathroom-blog|bathroom-blog/.*)$)
RewriteRule ^(?:[^/]+/)?([^/.]+)/?$ product_list.asp?catid=${mapfile1:${lower:$1}}&%{QUERY_STRING} [NC,L]
http://example.com/cms、http://example.com/cms/、http://example.com/cms/any_path、およびの代わりにvadminまたはのような URL がある場合は、対応するカテゴリ ID を使用して呼び出します。これらのルールは、マッピングを使用して名前を ID にマップし、マッピングに小文字の名前しか含まれていない場合でも、大文字と小文字の混合を許可します。bathroom-blogcmsproduct_list.aspmap_categories.txt
概要:のカテゴリ ID を持つhttp://example.com/cms/some_category呼び出し。product_list.aspsome_category
#Define the rules for the PRODUCT pages
RewriteCond %{URL} ^(?!/(cms|cms/.*)$)
RewriteCond %{URL} ^(?!/(vadmin|vadmin/.*)$)
RewriteCond %{URL} ^(?!/(bathroom-blog|bathroom-blog/.*)$)
#RewriteCond %{REQUEST_FILENAME}.asp -d
#RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule ^.+/.+/([^/.]+)/$ product_detail.asp?prodID=${mapfile2:${lower:$1}}&%{QUERY_STRING} [NC,L]
これは本当に奇妙です。3 つのRewriteCond条件は、上記の最初の 3 つとまったく同じです。これが本当に機能する場合、前任者は URL 書き換えの黒魔術を使用しました。たとえば、(リダイレクトなしで) 書き換えが成功した後、ルールが再読み取りされ、現在書き換えられている URL に適用されます。これについてもっと調べるには、あなたのシステムにアクセスする必要があります。
すべてが表示されていないことはすでにわかっています:RewriteEngine onが欠落しており、マッピング ファイルもありません。
URL 書き換えは、実験をしないと正しく理解するのが難しいことで有名なテーマの 1 つです。ここ Stack Overflow ですぐに役立つヘルプを入手するのが難しいのも不思議ではありません。問題は、ほとんどの場合、関連するシステムにアクセスする必要があることです。ライブ システムを調査しないと答えを出すことができないためです。
Apache自体が次のように述べています:http://shib.ametsoc.org/manual/misc/rewriteguide.html#page-header:
Apache モジュールmod_rewriteはキラーです。つまり、URL 操作を行うための強力な方法を提供する非常に洗練されたモジュールです。これを使えば、夢見ていたほぼすべての種類の URL 操作を実行できます。のmod_rewrite主な欠点は、初心者にとって理解しやすく、使いにくいことです。また、Apache の専門家でさえ、役立つ新しい側面を発見することがありmod_rewriteます。
言い換えれば、最初に自分の足を撃ち、二度とそれを使用しないか、その力のために残りの人生でそれを愛するかのmod_rewriteどちらかです.
強調は私です。