KISSの原則とmod_rewriteディレクティブ

ウェブ技術と彼のそれらへの関与についての永続的な厳しい考えにとどまり、私は1つの簡単な考えを共有することにしました。



KISSの原則は現在あまり使用されておらず、悪いです!



UPD 1: Aftyrは自転車を発明しようとしていますが、これを手伝ってもらえますか? :)

UPD 2:作者はもう助けられません... :)



それは:そのような不合理な結論は、いくつかの超人気システムの.htaccess設定の分析に基づいてなされました。



UPD 3:著者はそのような設定のすべてのファンに謝罪しますが、それでも「もっと簡単なこと」を理解しようとします、著者は彼が「まだ勉強している」ことを否定しません... :)







いったい何? ::

過去数か月にわたって、私は次のシステムの.htaccessファイルの「ボックス化された」mod_rewrite設定に慣れることを余儀なくされました。







私は彼らが好きではないと思ってはいけません、ちょうど反対です! それらはすべて「独自の」タスクに対して独自の方法で優れています。 そして、はい、私はそれらをあらゆる方法で「見ました」/「使いました」!



設定が配置される原理は、次のロジックに対応しています。



ファイルがない場合は、 エンジンに進みます。



つまり、一般的には次のようなものです。



	 <IfModule mod_rewrite.c>
		 RewriteCond%{REQUEST_FILENAME}!-F
		 RewriteCond%{REQUEST_FILENAME}!-D
		 RewriteRule ^ <u> index.php </ u> [L]
	 </ IfModule>




なぜこの原則が非常に普遍的に使用されているのか-答えられませんでした。



どうやら、昔々、誰かがそれがベストだと決めたようです。

それ以来、誰も本当に考えていません。

どうやら、これは本当に便利ですが、...



この原則を使用する理由:

  1. エンジンはURLを分析し、データベースのレコードを探します。
  2. エントリがない場合、404が発行されます。
  3. 現在のユーザーへのアクセスが「拒否」された場合-403。
  4. 一般的なケースでは、標準の404サーバーエラーを「出力」する機会が奪われています。
  5. 「ある」ページでは、コード内に挿入を記述して、エンジンやテンプレートエンジンなどを「プルアップ」しなければならない場合があります。 もちろん、一般的には、エンジンがない場合はエンジンに追加することでこれを取り除くことができます。




ちなみに、AmiroMSおよびその他の多くでは、404エラーの処理に基づいて「古風」が一般的に使用されていると思われます。これは「最高」です! システム(広告とは考えないでください)は一般的に悪くはありませんが(まあ、私はすでに否定的なことを言っているので、肯定的なことを言わなければなりません)。



そして、実際、ここでの質問は何をすべきか、何をすべきかです。



数十ページの(最初から)自己記述名刺サイトの場合、私は次のように行動します。

	 <IfModule mod_rewrite.c>

		 Rewriteengine on

		 RewriteCond%{REQUEST_FILENAME} -s
		 RewriteCond%{REQUEST_FILENAME}!-L
		 RewriteCond%{REQUEST_FILENAME}!-D
		 RewriteRule ^(。*)$ ../Index.php?fn=%{REQUEST_FILENAME} [NS、NC、L]

	 </ IfModule>




これは私に何を与えます:



  1. 「Statics」は処理されている場合にのみ処理を開始します。
  2. 静的がない場合は、静的である必要があります。404を「デフォルト」から指定します。
  3. テンプレートを静的に「バインド」する必要はありません;すぐにエンジン自体にあります。




私の「統計」とは何ですか?



テキストファイル、一般的なテキストファイル...

最初の行はTITLEです。

2行目はHEAD INCLUDEです。頭の最後まで挿入する必要があります。

3行目以下はすべてページの本文です...



テンプレートは正常です。このような通常のテンプレートは、これら3つの「変数」を静的から「選択」した後にエンジンに接続されます。 必要な数の変数を作成でき、「特殊文字の特別なシーケンス」で変数を分離できるため、「すべてが明確」になります。



速く動作しますか?

私はテストをしませんでしたが、私見-遅くはありません。



データベースデータはどうですか?



だから、誰が各「コントローラー」のページを作成すること、またはページの本文に「コントローラー」を構築し、「パラメーターに従って」それを処理することを妨げます。



セキュリティ



PHPでは、私は「エンジン」の最初にそのようなチェックを組み込んだ初心者ですが、正しいアクセス設定ではまったく必要ないと考えています。



 <?php
 if(isset($ _ GET ["fn"])){
	 if(stristr($ _ SERVER ["REQUEST_URI"]、$ _SERVER ["SCRIPT_NAME"])=== false){
		 $ fn = $ _GET ["fn"];
		 if(file_exists($ fn)=== true){
			 $ direct = 'y';
			 require_once( 'core.php');
		 } else {
			 $タイプ= 404;
			 require_once( 'error_report.php');
		 }
		 require_once( 'core.php');
	 } else {
		 require_once( 'error_report.php');
	 }
 } else {
	 require_once( 'error_report.php');
 }
 ?>





その誤りについてのコメントを聞いてうれしいです。



ご清聴ありがとうございました!



All Articles