2016-11-16 11 views
1

皆さん、私は自分のアプリケーション内のすべてのファイルとページに直接アクセスするのを防ぎ、誰も特定の言語を特定できないようにしています。サイトが書かれていますファイル拡張子を持つすべてのURLを.htaccess内のdifferenページにリダイレクトする方法

myapp.com/path/to/page.phpへの呼び出しが存在するかどうかにかかわらず、内部的にはmyapp.com/page_not_found.phpにリダイレクトされます。同様に、myapp.com/path/to/anywhereはmyapp.com/index.phpにリダイレクトされます。

私が処理することができました要求されたパスとファイルが直接物理ファイル

RewriteCond %{REQUEST_FILENAME} !-f 

と要求されたパスに一致しないと、ファイルが直接物理フォルダと一致しない場合は、後で を使用して

RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^([^/]*)(.*)$ index.php?path=$1&sub=$2 [QSA,L] 

しかし前者については、どこから始めたらいいのかわかりません。

答えて

0

* /page_not_found.phpする.PHPリダイレクトするには:あなたが言う*への.asp、変更(PHP)などの他の種類のファイル、リダイレクトしたい場合は

RewriteCond %{REQUEST_URI} .*\.(php) 
RewriteRule ^(.*)/ /page_not_found.php [R] 

を(PHPを| ASP)。

は、他のすべてをリダイレクトするには、あまりにもこれを追加します。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [L] 

を注意点として、ここで、あなたは(GETパラメータとしてパスを渡す必要はありません。つまり、index.phpのパス= $ 1 ..? )。代わりに、PHPの中から$_SERVER['REQUEST_URI']の値を読んでください。これにより、元のクエリ文字列が乱れることがなくなります(つまり、通常どおり$ _GETを使用できます)。たとえば、元のリクエストがmyapp.com/path/to/page?id=1の場合、$_GET['id']は通常どおり動作し、$_SERVER['REQUEST_URI']/path/to/page?id=1です。

あなたはそれを切り落とすために?で分割したいと思うので$_SERVER['REQUEST_URI']は、クエリ文字列を含めることができることに注意してください。

// Grab the path: 
$path=$_SERVER['REQUEST_URI']; 

// Split at ? to remove the query string if there is one: 
$path=explode('?',$path,2); 

// Get the first part only: 
$path=$path[0]; 
関連する問題