2016-01-02 90 views
0

我一直在試圖爲我的.htaccess設置一個RewriteRule,以將任何未找到的.php url重定向到我的loader.php ...由於某些原因,即使該文件存在,它也會重定向。需要幫助.htaccess RewriteRule

這是我有:

# Engine On for Extension Removal 
RewriteEngine On 

# Rewrite the url for the login page 
RewriteRule ^login/?$ index.php?tab=login [NC,L] 

# Load the url with the page loader if the url doesn't match any of the rule above 
RewriteRule ^(.*)\.php$ loader.php?page=$1 [NC,L] 

# Remove PHP Extension 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 

一切工作之前,我加入這一行:即使存在或不

RewriteRule ^(.*)\.php$ loader.php?page=$1 [NC,L] 

眼下,不管什麼是我的鏈接,它會加載loader.php。而且我還有其他規則,比如登錄名,同一個名字,但名字不同,這就是爲什麼我不打擾他們發佈。

回答

1

嘗試

# Engine On for Extension Removal 
RewriteEngine On 

# Rewrite the url for the login page 
RewriteRule ^login/?$ index.php?tab=login [NC,L] 


# Remove PHP Extensio 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\.php$ loader.php?page=$1 [NC,L] 

的問題

RewriteRule ^(.*)\.php$ loader.php?page=$1 [NC,L] 

是,它接受請求的任何URL .PHP並重寫它loader.php。

條件

RewriteCond %{REQUEST_FILENAME} !-f 

變化規律的這種行爲,它告訴服務器處理規則,只有當爲不存在的PHP文件的請求。

+0

謝謝!很棒! :) –

+0

只是一個奇怪的問題,什麼是!-d爲?我假設-f是如果它找到該文件,並!-f是如果它沒有找到該文件? –