Apache の書き換えテクノロジーを使用する

伊谢尔伦
リリース: 2016-11-21 16:20:25
オリジナル
916 人が閲覧しました

Apache の書き換えテクノロジを使用する

PHP プロジェクトを実行する場合、基本的な要件は /user/heiyeluren を /user.php?uid=heiyeluren などの URL にリダイレクトすることです。もちろん、/article をリダイレクトすることもできます。 /200707291011.html を /article.php?id=200507291011 などに変更すると、シミュレーションは実際の URL アドレスを隠すことができる静的ページであるようで、レインブーツなどの基本的なセキュリティ対策に役立ちます。したがって、書き換えが良い解決策であるようです。

Apache で rewrite を実行するには、まず mod_rewrite.c ファイルである mod_rewrite コンポーネントをインストールする必要があります。次に、mod_rewrite を ./configure に入れてインストールする必要があります。
通常、リライトを設定する場合は、httpd.conf で設定するか、Web ページの現在のディレクトリにある .htaccess ファイルで定義して、どのファイルにリダイレクトするかを決定することができます。柔軟性があり、仮想化にも適しています。ホスト ユーザーが実行します。

.htaccess ファイルの例を見てみましょう:


1
2 RewriteEngine On
3 RewriteBase /
4 RewriteCond %{REQUEST_FILENAME} -f [OR]
5 RewriteCond % {REQUEST_F ILENAME } -d
6 RewriteRule ^.*$ - [S=42]
7
8 #RewriteRule ^share/$ /share.php [QSA,L]
9 RewriteRule ^tag/([^/]+ )/? $ /user_tags.php?tag=$1 [QSA,L]
10 RewriteRule ^city/([^/]+)/?$ /user_city.php?tag=$1 [QSA,L]
11 #RewriteRule ^([ ^/]+)/day/([^/]+)/?$ /user_share.php?id=$1&s=1&selTime=$2 [QSA,L]
12 #RewriteRule ^([^/]+ )/日 /([^/]+)/?$ /user_share.php?id=$1&s=1&selTime=$2 [QSA,L]
13
14 RewriteRule ^([^/]+)/日/([ ^/] +)/?$ /user_share.php?id=$1&s=1&selTime=$2 [QSA,L]
15 RewriteRule ^([^/]+)/week/([^/]+)/?$ /user_share.php?id=$1&s=2&selTime=$2 [QSA,L]
16 RewRiteRule ^([^/]+)/month/([^/]+)/?$ /user_share.php?id=$1 &s=3&selTime =$2 [QSA,L]
17
18 RewriteRule ^([^/]+)/day/?$ /user_share.php?id=$1&s=1 [QSA,L]
19 RewriteRule ^([ ^/] +)/week/?$ /user_share.php?id=$1&s=2 [QSA,L]
20 RewriteRule ^([^/]+)/month/?$ /user_share.php?id=$1 &s=3 [QSA,L]
21
22 RewriteRule ^([^/]+)/?$ /user_share.php?id=$1 [QSA,L]
23


ですかなり長くなりましたので、重要な内容に焦点を当ててみましょう。 の間の内容は、URL 書き換え関数を実行するかどうかを決定するための定義です。最も重要なのは、次の RewriteRule です。 rewrite. ここでは、Perl ルールと互換性のある正規表現が適用されます:


Text:
任意の 1 文字と一致します
[chars] 現在の文字と一致します
[^chars] 現在の文字と一致しません
text1|text2任意の text1 または text2 が含まれます A


数量子:
? (テキスト) テキストのグループ化
' s ' を使用して代替案の境界線を設定するか、
一致するコンテンツの開始タグ

$ 一致するコンテンツの終了タグ


エスケープ:
char は、「.[]()」やその他の文字のエスケープを含む特殊文字をエスケープするために使用されます


基本的なルールは上記のとおりで、次の正規表現のようになります: ^/([ ^ /]+)/~([^/]+)/(.*)$ は、/Language/~ Realname/.../File のようなパスに一致します。

それでは、この観点から上記の内容を理解しやすくなります。 RewriteRule ディレクティブのルールを簡単に見てみましょう:

RewriteRule アクセスするパス 指定する必要がある実際のパス
これは非常に明確です。たとえば、/user/heiyeluren を /user.php にリダイレクトしたい場合です。 ?uid=heiyeluren の場合、私のルールは次のようになります:

RewriteRule ^user/([^/]+)$ ^/user.php?uid=$2 [QSA,L]


1 つの例から推論すると、ルールの書き方が分かりやすく、上記のルールも理解できるようになりました。 スクリプトの内容は消えています。

明確なことは何もありません。特定の内容をより深く理解するには、添付のリンクを参照してください。下手な文章ですがご容赦ください。


添付ファイル:
Apache Rewrite テクノロジー http://www.yujs.com/recommendation/004.htm
Apache モジュール mod_rewrite http://linux.dalouis.com/doc/apache2.0/mod/mod_rewrite.html
URL書き換えガイド http://linux.dalouis.com/doc/apache2.0/misc/rewriteguide.html
Apache HTTP Server 2.0 バージョンのドキュメント http://linux.dalouis.com/doc/apache2.0/


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート