2016-08-30 21 views
0

私はmod-rewriteを使用してフレンドリURLを、アソシエイティブな配列の実際のURLを検索してヘッダ( "location:$ url")でリダイレクトするphpスクリプトにリダイレクトします;フレンドリーなURLがphpリダイレクト後にロケーションバーに表示されない

私の書き換えルールは、これは私が友好のURLを表示するのに対し、ブラウザのロケーションバーに表示される$のURLになり

RewriteEngine On 
RewriteCond %{REQUEST_URI} "^/$" 
RewriteRule ^(.*) http://%{HTTP_HOST}/index.php [L,R=301] 
RewriteCond %{REQUEST_URI} !=/home.php 
RewriteCond %{REQUEST_URI} !(\.php|\.html|\.htm|\.png|\.gif|\.css|\.htm|\.js|\.txt|\.xml)$ [NC] 
RewriteRule ^([^/]*)$ /home.php?page=$1 [L] 

です。

私はこのポストRewriting URL and making new URL show in location barからなぜこれが(PHPの位置のヘッダーのために)起こるか理解していますが、私が望むものを達成する方法を知りません。

いくつかの内部PHPスクリプトによって構築された多数の動的ページがあり、スクリプトと要求パラメータのすべての組み合わせに対するモッドリライトルールの作成は難しいでしょう。

私の質問は、フレンドリーなURLをロケーションバーに表示させる方法です。代わりに、あなたがそのページを含める必要が

header("location: $page");

使用してユーザーをリダイレクトするのPHPスクリプトで

+0

また、[RewriteRulesが何であるかについての参考文献:mod \ _rewrite、URL書き換えおよび "pretty links"(http://stackoverflow.com/q/20563772)またはピンポンリダイレクトを作成する方法。 – mario

答えて

1

。あなたは間違いなく$ pageの値が受け入れられる値であることを確実にしたいと考えています:

<?php 

// /home.php 

$page = $_GET['page']; 

$valid_pages = array(
    'about', 
    'contact', 
); 

if(in_array($page, $valid_pages)){ 
    include($page . '.php'); 
    exit; 
} 

die('Invalid Page.'); 
0

私はこれを今解決しました。

$ページの多くが '?a = b'のタイプのコンテンツを持っているので、インクルードは私にとって一貫して機能しません。

私はそれを解決:正しい方向に私を指しているためテイラーへ

if(array_key_exists($page, $pages)){ 
$page = $pages[$page]; 
if (strpos($page,'?')) {   
    $html = file_get_contents(<site>.$page); 
    echo $html; 
} 
else include(<path>.$page); 
exit; 
} 
die('Invalid Page.'); 

感謝を。私は彼の答えを受け入れました

関連する問題