2016-07-30 43 views
1

我創建了一個.htaccess文件,以允許用戶請求一個沒有php擴展名的頁面,並在請求以'.php'結尾的URL時強制重定向到一個自定義錯誤頁面。就像這樣:如何在請求以'.php'結尾的URL時重定向到錯誤頁面?

mysite.com/home - >home.php將送達

mysite.com/home.php - >禁止自定義403將送達

我的問題是,當我要求mysite.com/home.php,該home.php轉而投放,沒有任何錯誤。

這裏是我的.htaccess文件:

RewriteEngine On 
RewriteBase/

# Exit the rule chain when showing error pages 
RewriteRule ^error/403.php$ - [L] 
RewriteRule ^error/404.php$ - [L] 

# Append '.php' to every request 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_FILENAME}.php [L] 

# Show 404 error page when original request ends with '.php' 
RewriteCond %{THE_REQUEST} \.php 
RewriteRule \.php/.*$ - [L,R=404] 

# Custom error 
ErrorDocument 403 /error/403 
ErrorDocument 404 /error/404 
+0

'RewriteRule \ .php /.*$'應該只是'RewriteRule \ .php $',但我想你最終會在404之後做所有事情,但是試試看。 (如果您使用的是Apache 2.4,請嘗試將'L'的'END' insead) –

+0

謝謝。將它改爲'RewriteRule \ .php $'效果很好,但有一些修改。 – GPraz

回答

0

我改變\.php/.*$\.php.*$\.php$和它現在的工作,。

在這種情況下,我選擇了第一個因爲API支持,如mysite.com/api/data1/data2/(通過訪問api.php)。

0

添加到您的.htaccess文件

<Files ~ "\.php$"> 
    Order allow,deny 
    Deny from all 
</Files> 
相關問題