2016-01-02 88 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是如果它没有找到该文件? –