4

私は長い間、人々がどのようにしてURLを「.html」や「.apsx」などのファイル拡張子なしで機能させることができるのか疑問に思っていました。

たとえば、このWebサイトを見てください。

http://www.axongarside.com/Communication
http://www.axongarside.com/Communication/Compleat
http://www.axongarside.com/Brand
http://www.axongarside.com/Brand/K3-Group

彼らはこれをどのように達成しましたか?私が考えることができる唯一の方法は、ページごとに新しいディレクトリを作成し、各ディレクトリにインデックスページを作成することですが、これは大規模なWebサイトにとっては非常に面倒です。他に方法はありますか?

ありがとうございました

4

3 に答える 3

5

最も一般的な3つの方法は次のとおりです。

  • インデックスページを使用します(つまり、ディレクトリを作成してindex.htmlファイルを配置するだけです)。
  • リライトエンジン(Apacheのmod_rewriteなど)を使用して、URLをさまざまなファイルにマップします(これはPHPランドでは一般的なアプローチです)。
  • URLを処理するフロントコントローラースクリプトを使用します(これはMVCフレームワークの通常のアプローチです)。

後者のアプローチでは、Apacheサーバー構成で次のようなものを使用します。

WSGIDaemonProcess example processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup example
WSGIScriptAlias / /hosts/example.com/application/wsgi.py

また

SetHandler fcgid-script
Alias / /hosts/example/application.fcgi/

WSGI(Python)またはFastCGI(Cross-language、その特定の例は、私が書いているPerlアプリケーションからクリブされたもの)をそれぞれ使用するスクリプトの場合。

URL形式はスクリプト自体によって処理され、フレームワークが異なれば問題に対するアプローチも異なります。

Catalystでは、これはサブルーチン名に属性を提供することによって行われます。

Dancerには独自のルートハンドラ構文があります。

Web :: Simpleは、サブルーチンのプロトタイプを使用します。

Djangoは、パターンのリストを含む別のファイルを使用します。

于 2013-01-08T09:08:09.917 に答える
2

Apacheを使用している場合は、次のように.htaccessファイルを使用して.html拡張子を削除できます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

URLから.html拡張子を削除するには、.htmlなしのページにリンクするだけです。

<a href="http://www.mysite.com/page">linkhere</a>
于 2013-01-08T09:04:40.350 に答える
1

Apache HTTPサーバーを使用している場合は、mod_rewrite機能を確認する必要があります。IISにも同様のURL書き換え機能があります。

于 2013-01-08T09:07:52.077 に答える