ホームページ バックエンド開発 PHPチュートリアル RewriteCond の関連知識と 13 の mod_rewrite アプリケーション例の説明 Apache pseudo-static

RewriteCond の関連知識と 13 の mod_rewrite アプリケーション例の説明 Apache pseudo-static

Jun 11, 2018 am 10:58 AM

1.サブドメイン名に www タグを追加します
RewriteCond %{HTTP_HOST} ^([a-z.] )?example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\ . [ NC]
RewriteRule .? http://www.xample.com%{REQUEST_URI} [R=301,L]
このルールは、第 2 レベルのドメイン名の %1 変数をキャプチャします。 www で始まらない場合は、www を追加し、その後に前のドメイン名と {REQUEST_URI} を続けます。
2.ドメイン名の www タグを削除します
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule .? http://example.com%{REQUEST_URI} [ R= 301,L]
3. www タグを削除しますが、サブドメインは保存します
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_] \.)?example\.com ) $ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
ここで、1% 変数が一致すると、サブドメイン名は %2 になります (内部アトム)、そして必要なのはこの %1 変数です。
4.画像のホットリンクを防ぐ##ウェブマスターの中には、自分の Web サイトに画像をホットリンクしようとあらゆる手段を講じる者もいますが、これにより帯域幅が消費されます。この動作を防ぐコードを追加できます。
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]
RewriteRule \.(gif|jpg| png)$ - [F]
{HTTP_REFERER} 値が空でない場合、または独自のドメイン名からのものではない場合、このルールは [F]FLAG を使用して gif|jpg|png で終わる URL をブロックします
このタイプのホットリンクを絶対に嫌っている場合は、画像を変更して、ホットリンク Web サイトを訪問するユーザーに、その Web サイトがあなたの写真を盗んでいることを知らせることもできます。
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule \.(gif |jpg|png)$ あなたの画像アドレス [R=301,L]
画像へのホットリンクを防ぐことに加えて、上記のルールはホットリンクされたすべての画像を設定した画像に置き換えます。
特定のドメイン名による画像のホットリンクを防ぐこともできます:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?leech_site\.com/ [NC]
RewriteRule \.( gif|jpg|png)$ - [F,L]
このルールは、ドメイン名のブラックリストにあるすべての画像リンク要求をブロックします。
もちろん、上記のルールは {HTTP_REFERER} に基づいてドメイン名を取得します。これを IP アドレスに変更したい場合は、{REMOTE_ADDR} を使用するだけです。

5.ファイルが存在しない場合は、404 ページにリダイレクトします。 ホストが 404 ページ リダイレクト サービスを提供していない場合は、弊社が独自に作成します。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? /404.php [L]
ここで、-f は既存のファイル名に一致し、-d は既存のファイル名に一致します。既存のパス名。このコードは、404 リダイレクトを実行する前に、ファイル名とパス名が存在するかどうかを判断します。 404 ページに ?url=$1 パラメータを追加することもできます:
RewriteRule ^/?(.*)$ /404.php?url=$1 [L]
このようにして、404 ページをデフォルトの信頼度、電子メールリマインダーの送信、検索の追加など、その他の機能もあります。

6.ディレクトリ名の変更 Web サイト上のディレクトリの名前を変更したい場合は、次のことを試してください:
RewriteRule ^/?old_directory/([a-z/.] )$ new_directory/$1 [R=301 , L]
ルールでは、ファイルのサフィックス名と一致するように「.」を追加しました (すべての文字を表すわけではなく、先頭にエスケープ文字があることに注意してください)。 ############7。 .html サフィックスを .php
に変換します。 .html ファイルに引き続きアクセスできる場合は、Web サイトのリンクを更新します。 RewriteRule ^/?([a-z/] )\.html$ $1.php [L] これは Web ページのリダイレクトではないため、訪問者には表示されません。これを永続的なリダイレクト (可視) にし、FLAG を [R=301,L] に変更します。
8.ファイル拡張子なしでリンクを作成する


PHP Web サイトへのリンクをより簡潔で覚えやすいものにしたい場合、またはファイル拡張子を非表示にしたい場合は、これを試してください: RewriteRule ^/?([ a-z] )$ $1.php [L] Web サイトに PHP ファイルと HTML ファイルが混在している場合は、RewriteCond を使用して、最初にこのサフィックスを持つファイルが存在するかどうかを確認し、次にそれを置き換えることができます: RewriteCond %{REQUEST_FILENAME }.php - f RewriteRule ^/?([a-zA-Z0-9] )$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/?( [a-zA -Z0-9] )$ $1.html [L]
ファイルに .php 接尾辞が付いている場合、このルールが実行されます。


9.クエリ変数の特定のパラメータを確認する


URL に特別なパラメータがある場合は、RewriteCond を使用してその存在を識別できます:
RewriteCond %{QUERY_STRING} !uniquekey=
RewriteRule ^/?script_that_requires_uniquekey\.php$ other_script.php [QSA,L]
上記のルールは、{QUERY_STRING} に uniquekey パラメータが存在するかどうかを確認します。{REQUEST_URI} の値が script_that_requires_uniquekey の場合、新しい URL に転送されます。
10.クエリ変数を削除します。
Apache の mod_rewrite モジュールは、次の変更を加えない限り、クエリ変数を自動的に認識します:
a) 新しいクエリ パラメータを割り当てます ([QSA,L] FLAG を使用して保存します)。元のクエリ変数)
b) ファイル名の後に「?」を追加します (index.php? など)。ブラウザのアドレスバーに「?」記号は表示されません。
11.現在実行している URL の場合、現在の URI を新しい形式
で表示します: /index.php?id=nnnn。これを /nnnn に変更し、検索エンジンに新しい形式で表示されるようにしたいと考えています。まず、検索エンジンを新しいものに更新するには、古い URL を新しい形式にリダイレクトする必要がありますが、以前の Index.php が引き続き実行できることも確認する必要があります。あなたは私に混乱していますか?
上記の機能を実現する秘訣は、訪問者には見えないマーカー「マーカー」をクエリ変数に追加することです。クエリ変数に「マーカー」タグを持たないリンクのみをリダイレクトし、元のリンクを新しい形式で置き換え、[QSA] FLAG を通じて既存のパラメーターに「マーカー」タグを追加します。実装方法は以下の通りです。
RewriteCond %{QUERY_STRING} !mark
RewriteCond %{QUERY_STRING} id=([-a-zA-Z0-9_ ] )
RewriteRule ^/?index\.php $ %1? [R=301,L]
RewriteRule ^/?([-a-zA-Z0-9_ ] )$index.php?marker &id=$1 [L]
ここに元の URL : http://www.example.com/index.php?id=nnnn にはマーカーが含まれていないため、最初のルールによって http://www.example.com/nnnn に永続的にリダイレクトされ、http:// 2 番目のルールにより、//www.example.com/nnnn は http://www.example.com/index.php?marker&id=nnnn と 2 つの変数 mark と id= にリダイレクトされます。 nnnn が追加され、最後に mod_rewrite が処理プロセスを開始します。
2 番目の一致では、マーカーが一致するため、最初のルールは無視されます。これは http://www.example.com/index.php?marker &id=nnnn に表示されます。 2 番目のルールも無視されるので、これで完了です。
このソリューションには Apache の拡張機能が必要なため、Web サイトが共有ホスト上に配置されている場合は多くの障害に遭遇することに注意してください。
12.セキュリティ サービスが有効になっていることを確認します#Apache は、セキュリティ サービスが有効になっているかどうかを識別する 2 つの方法を使用して、それぞれ {HTTPS} 変数と {SERVER_PORT} 変数を参照します。 ##RewriteCond %{ REQUEST_URI} ^secure_page\.php$
RewriteCond %{HTTPS} !on
RewriteRule ^/?(secure_page\.php)$ https://www.example.com/$1 [R =301,L]
上記のルールは、{REQUEST_URI} 値が安全なページ コードと等しいかどうか、および {HTTPS} が on に等しくないかどうかをテストします。これら 2 つの条件が同時に満たされる場合、リクエストはセキュリティで保護されたサービス URI にリダイレクトされます。さらに、{SERVER_PORT} を使用して同じテストを実行できます。これは一般的に使用されるセキュリティ サービス ポート
RewriteCond % です。 {REQUEST_URI} ^secure_page\.php$
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(secure_page\.php)$ https://www.example.com/$1 [R=301 、L]


13。特定のページにセキュリティ サービスを適用する 同じサーバー ルート ディレクトリ内にセキュリティ サービス ドメイン名と非セキュリティ サービス ドメイン名が存在する場合は、RewriteCond を使用して、セキュリティ サービス ポートがは占有であり、安全なサービスであるためには次のリストのページのみが必要です: RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(page1|page2|page3|page4|page5)$ https: //www .example.com/%1[R=301,L]
安全なサービスとして設定されていないページをポート 80 に返す方法は次のとおりです:
RewriteCond %{ SERVER_PORT } ^443 $
RewriteRule !^ /?(page6|page7|page8|page9)$http://www.example.com%{REQUEST_URI} [R=301,L]

この記事では、RewriteCond と 13 Apache 擬似静的に関する mod_rewrite アプリケーションの例と関連知識について説明します。さらに関連するコンテンツについては、PHP 中国語 Web サイトを参照してください。

#関連する推奨事項:

フォワード プロキシとリバース プロキシの違いを理解する

#Apache を使用して仮想ホストを構築する方法

sh memcached プロセスを開始して監視する方法

以上がRewriteCond の関連知識と 13 の mod_rewrite アプリケーション例の説明 Apache pseudo-staticの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

See all articles