2

私が最初にしたことは、拡張子 (.aspx など) を削除することでした。これを行うために、IIS の URL Rewrite モジュールを使用しました。

アクセスすると、これは機能するようになりました

http://www.mysite.com/folder/filename

また

http://www.mysite.com/folder/filename.aspx

後者は最初にリダイレクトされ、ページが読み込まれます。次に、次のことを試しました。

http://www.mysite.com/folder/filename/

これは(予想どおり)壊れますが、これはユーザーエクスペリエンスが悪いようです。おそらく、Web を頻繁に使用する私は、スラッシュがなくてもスラッシュがなくても機能すると思います。最後にスラッシュを付ける唯一の方法は、フォルダを作成してデフォルトのdefault.aspxページを使用することですが、できれば避けたいと思っています。

続けて、ファイルと同名のディレクトリを追加してみたので、上の例の場合は というディレクトリを作成しましたfilename。このディレクトリに default を作成しましたdefault.aspx。ここで、同じ URL にアクセスしようとするとhttp://www.mysite.com/folder/filename、その新しいフォルダーの default.aspx ページに送信され、URL にスラッシュが追加されますhttp://www.mysite.com/folder/filename/

これは、デフォルトでは拡張子のない URL がディレクトリへのアクセスを試み、見つからない場合にのみ IIS がファイルを上書きして提供することを示唆しています。

幸いなことに、私はファイル名とフォルダー名を完全に制御できる立場にあるので、そこでの事故を防ぐことができれば幸いです (注意は必要ですが)。だから私の質問: ファイル拡張子を削除する方法はありますか? できれば、内部に default.aspx を含む大量のディレクトリを作成する必要はありません。

4

3 に答える 3

1

IIS が mod_rewrite をどのように処理するかは完全にはわかりませんが、Linux 環境に適用するロジックが問題の解決に役立つことを願っています。

私の .htaccess ファイルでは、最初に次のルールに適用される 2 つの条件を記述します。次の URL がファイルでもディレクトリでもない場合、ユーザーは次のページにリダイレクトされます。

ただし、常に優先されるディレクトリまたはファイルが存在する場合。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^news/([^/]*)$ news.php?article_slug=$1 [L,QSA]

このルールは、必要な構造 (フォルダー/ファイル) を許可するか、少なくとも URL としてシミュレートします。

したがって、上記の例は指示します

http://www.mysite.com/news/記事名 & http://www.mysite.com/news/記事名/

GET 変数 article_slug を使用して news.php に

それが何か助けになるか、それとも私がさらに助けることができるかどうか教えてください。

于 2012-05-04T08:30:42.933 に答える
1

最も簡単な方法は、ASP.NETルーティングを使用することです.Webフォームについて話していると思います.あなたの例では、それは非常に簡単です.

  1. プロジェクトに System.Web.Routing 参照を追加します
  2. Global.asax.cs でルーティングを使用する (System.Web.Routing を使用)
  3. アプリケーションの start にルートを追加します。
protected void Application_Start(object sender, EventArgs e)
{
  RouteTable.Routes.MapPageRoute("", "Filename", "~/Filename.aspx");
}

以上です。

Win フォームのルーティングに関する詳細情報は次のとおりです。

http://msdn.microsoft.com/en-us/library/cc668201.aspx#adding_routes_to_a_web_forms_application

http://msdn.microsoft.com/en-us/library/dd329551.aspx

于 2012-05-04T08:33:11.377 に答える
0

IIS Rewrite は、異なる URL として、末尾にスラッシュがある URL と末尾にスラッシュがない URL を (正しく) 一致させます。ルールの実装方法によっては、次のことが必要になる場合があります。

  • 2 つのルールを実装します。1 つはすべてまたは特定の URL の末尾のスラッシュの追加 (または削除) を処理するルールで、もう 1 つは URL を .aspx ページに書き換えるルールです。
  • 末尾のスラッシュがある URL とない URL に別々のマップを追加する必要がある場合があります

解決策は、どこでどのように一致させるかによって異なります。

于 2012-05-04T08:54:49.263 に答える