我一直试图为我的.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。而且我还有其他规则,例如登录一个,同样的东西,但不同的名称,这就是为什么我没有发布它们。
答案 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文件的请求时处理规则。