2016-05-21 13 views

答えて

2

変更第二部に仕事ができることに、注意してください。間違った要求を404エラーページにリダイレクトします。

上記のコードは、間違ったリクエストをadminディレクトリにリダイレクトします。

0

任意の有効なHTTPレスポンスステータスコードは何も指定されていない場合、デフォルトで使用されている302個のステータスコードと、[R = 305]構文を使用して、指定することができます。指定されたステータスコードは必ずしもリダイレクト(3xx)ステータスコードである必要はありません。ただし、ステータスコードがリダイレクト範囲(300〜399)の範囲外の場合、置換文字列は完全に削除され、Lが使用されたかのように書き換えが停止されます。

[R=404]を使用すると、リダイレクト文字列が削除され、ルールは機能しないように動作します。解決方法は、[R=3xx]を使用してリダイレクトを行うか、[R=404]をリダイレクトなしで使用するかのいずれかです。別の方法は、ErrorDocument 404 somefile.php構文を使用することです。この中で、

ErrorDocument 404 /admin/admin_panel.php 

また:

/.htaccess

RewriteEngine on 

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

そして/admin/.htaccessこの例では、解決策は、2つの異なるファイルを作成することですルートディレクトリ.htaccessからのルールは意図したとおりに動作します。

EDIT:あなたのコードで

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} ^/admin/ 
RewriteRule ^admin/(.*)$ admin/admin_panel.php [L,NC] 

、このフラグ[R=404,L,NC]が優先されます:

以下Mohammed Elhag's answerもここに次のコードによって

関連する問題