0

get メソッドを介して渡されないページ ID を介してさまざまなページにアクセスする Web サイトをいくつか見てきました。

このようなもの: http://www.website.com/sitefolder/pageid/ 他のウェブサイトでよく見かける場所: http://www.website.com/index.php?id=12

例1のさまざまなページがデータベースに保存されており、それが示唆するように別のフォルダーには保存されていないことを私は知っています..

通常、スラッシュがある場合、これは別のフォルダーを通過していることを意味します..

異なるページ用に何百もの異なるフォルダーを作成することなく、スラッシュのページ ID インジケーターを作成する方法を誰かに説明してもらえますか?

したがって、'?id=12' メソッドを使用せずに URL を介して渡されたページ ID、ページ名、または URL エイリアスによってコンテンツを適応させる、'sitefolder' 内の 1 つの php ページだけです。

4

2 に答える 2

1

次のように、有効な.htaccessルールを使用してこれを実現できます。mod_rewrite

RewriteEngine On
RewriteRule ^/([^/]+)$  index.php?id=$1

これは に書き換えexample.com/12られexample.com/index.php?id=12ます。

編集:正規表現、分解:

  • ^行頭に一致
  • /マッチスラッシュ
  • ([^/]+)スラッシュではない最初の文字グループを照合して保存します
  • $行末に一致

RewriteRuleRegExの場合、「行」は の後のすべてを意味しexample.comます。

于 2013-03-24T12:52:14.950 に答える
0

はい、通常「/」は次のフォルダーに移動することを意味します..しかし、必要に応じてURL構造をカスタマイズすることもできます..

この の URL 書き換えを有効にする必要があります。これは、次のような .htaccess ルールを使用して実現できます。

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

または、独自のカスタマイズされた mvc を持つことができます。そのような場合は、「/」でパラメーターを処理するように url に変更できます。

       $request_url = $_SERVER['REQUEST_URI'];        
       $url         =  str_replace(LOCAL_PATH,"",$request_url);        
       $parameters   = explode("/",$url);

       if($_SERVER['HTTP_HOST']!='localhost')
       {
         $total = count($parameters)-1;
         unset($parameters[0]);        
         unset($parameters[1]);
         unset($parameters[2]); 
       }       
       $slipt = array_chunk($parameters, 2);
       $response = array();
       foreach($slipt as $val)
       {
          if( isset($val[1]) )
            $response[$val[0]] = $val[1];
       }         
      return $response;

これは、URLを取得できることを意味します"http://domaintest/controller/method/page/1";

ここで、ページパラメータの値は1になります

于 2013-03-24T13:00:57.957 に答える