2011-11-11 13 views
0

URLに基​​づいてページを組み込むのはひどい方法ですか?URLに基​​づいたページをPHPに組み込む

if($url === '/index.php/'.$user['username']) { 
    include('app/user/page.inc.php'); 
} 

// Upload * 
else if($url === '/index.php/'.$user['username'].'/Upload') { 
    include('app/user/upload.inc.php'); 
} 

// Another page * 
else if($url === '/index.php/AnotherPage') { 
    include('page/another_page.inc.php'); 
} 

index.phpmod_rewriteを使用して)私は

^(.+)$ index.php?user=$1 [NC] 

やカップル他のベースページのmod_rewriteを通じて$_GET['variables']を使用しています。しかし、これらは基本ファイルの最初の引数です。上記のif/elseの例も大文字と小文字が区別されますが、実際にはそれは良くありません。

これについてのご意見はありますか?

mod_rewriteindex.phpのこれらの第2 /第3などの議論はどうでしょうか?

これは完全に上記の例と互換性のないSEOですか?

+0

これには、このコードを実行する関数のスコープ内のファイルが含まれています。それはあなたが欲しいものですか? [PHPマニュアル](http://php.net/manual/en/function.include.php)の例2を参照してください。 –

答えて

0

私はあなたの質問自体を完全に理解していません。
「これらの第2 /第3引数など」とはどういう意味ですか?

次のように読みやすく/保守性的に同じ手順を行うことができます。

$urls = array(
'/index.php/'.$user['username']   => 'app/user/page.inc.php', 
'/index.php/'.$user['username'].'/Upload' => 'app/user/upload.inc.php', 
'/index.php/AnotherPage'     => 'page/another_page.inc.php' 
); 
$url = $urls[$url]; 

「.inc.php」が一貫性である場合、あなたは、配列の各項目からそれを削除して追加することができますその末尾に:同じ線に沿って
$url = $urls[$url].'inc.php'

、あなたは逆の配列を書き込み(上記配列のキーと値を切り替え)し、それを検索するpreg_grepを使用することができます。これにより、大文字と小文字を区別せずに検索し、ワイルドカードを許可することができます。

$url = key(preg_grep("/$url/i", $urls)); 

ライブインタラクティブな例については、Hereを参照してください。

これは、ワイルドカードマッチの場合は最も効果的ですが、これははるかに効率が悪いことに注意してください。
(ほとんどのページでは非効率的です)

関連する問題