1

このリダイレクトは初めてなので、仕組みを知りたいですか? index.php というファイルがあり、サイト内の任意のディレクトリにアクセスしたい

 index.php

<?php 
    if(empty($dir)){
    include('includes/home.php');
    }  
    if($dir=='profile'){
    include('includes/profile.php');
    }
    elseif($dir=='settings'){
    include('includes/settings.php');
    }
    else{
    include('includes/404.php');
    }
    ?>

URL は次のとおりです。

test 1. www.example.com/ - will view the include home.
test 2. www.example.com/settings - will view the include  settings.
test 3. www.example.com/errorsample - will view the include   404 page.

そのコードを使用して index.php を作成する方法、.htaccessまたはそれがどのように機能するかのアイデアとそのサンプルコード。

4

2 に答える 2

2

これを簡単な例で説明しようと思います。.htaccess次のファイルを検討してください

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ /index.php?x=$1 [L] 
#  ^ This is the rule that does the redirection

これが行うことは、すべての URL リクエストをルーティングし、リクエストを index.php に送信することです。どのようにそれを送信しますか?そのための例をいくつか示します。

  • www.example.com/settingsとして送信されますwww.example.com/index.php?x=settings
  • www.example.com/errorsampleとして送信されますwww.example.com/index.php?x=errorsample

これで、index.php を構成し、取得した値で何をしたいかを決定しました。$_GET['x']

switch($_GET['x']) {
   case "profile": include("include/profile.php"); break;
   // .... similarly other cases
   default: include("includes/home.php"); break;
}

}

于 2012-10-01T07:52:05.253 に答える
0

これは実際にはリダイレクトではありません。あなたが説明しているように見えるのは、基本的なページコントローラーです。これは、さまざまな要求に対応できるWebサイトフレームワークへの単一のエントリポイントです。

これで最初に行う必要があるのは、サイトのフォルダ構造について考えることです。通常、同じレベルに「パブリック」ディレクトリと「ライブラリ」(または「インクルード」)ディレクトリがあります。DocumentRootこれは、apache設定でを-に設定している限り/var/www/yoursite/public、の「include」ディレクトリにあるPHPコードにアクセスするのが難しくなることを意味します/var/www/yoursite/include

パブリックディレクトリには、.htaccessファイルとindex.phpファイルが含まれます。

最も簡単な設定は、これを.htaccessに含めることです。

RewriteEngine On
RewriteRule ^(.*)$ /index.php?page=$1 [L,QSA]

これにより、Webサイトに送信されたURLがキャプチャされ、PHPの$_GET配列の値として設定されます。ここでのQSAオプションは、リンクにクエリ文字列(http://www.example.com/module?parameter=valueなど)がある場合、この情報もスクリプトに渡されることを意味します。

if / elseの長いリスト、または長いswitch / caseブロックを作成するのは面倒で(そして急速に保守不可能である)、最終的には、URLとファイルのこの1対1のマッチングは行われないと思います。パブリックディレクトリにファイルを残しておくと便利です。もちろん、ページコントローラー(または完全なModel-View-Controller)を使用することの利点は、この1対1の一致が必要ないことです。IDまたは「わかりやすい」URLを渡して使用することもできます。データベースから保存された情報(ブログ投稿など)を抽出します。

また、URLを関数にマッピングする際には注意が必要です。include誰かがhttp://www.example.com/database.phpをリクエストした場合はどうなりますか?-適切な予防策を講じていないと、サイトとサーバーが混乱し始める可能性があります。

于 2012-10-01T08:05:48.053 に答える