需要帮助.htaccess RewriteRule

时间:2016-01-02 08:00:25

标签: .htaccess

我一直试图为我的.htaccess设置一个RewriteRule,将任何未找到的.php网址重定向到我的loader.php ...由于某些原因,即使文件存在,它也会重定向。

以下是我所拥有的:

===

在添加此行之前,一切正常:

# 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]

现在,无论我的链接是什么,即使它存在与否,它都会加载loader.php。而且我还有其他规则,例如登录一个,同样的东西,但不同的名称,这就是为什么我没有发布它们。

1 个答案:

答案 0 :(得分: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]

是它接受请求中的任何.php url并将其重写为loader.php。

条件

RewriteCond %{REQUEST_FILENAME} !-f

更改规则的此行为,它告诉服务器仅在存在对不存在的php文件的请求时处理规则。