我一直在网站上工作,并且最近对我的.htaccess文件进行了一些更改。每当我去localhost / company时它都会正确地重定向我,但是现在每当我去localhost / company时它会将我重定向到http://localhost/company.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php//并出现404页面错误,显然该页面不存在。它将我重定向到错误的URL。
我很确定这个问题来自我的.htaccess文件,我已经从3个月前回滚过.htaccess了,这个问题仍然存在。
这是我的.htaccess:
RewriteEngine On
RewriteRule ^config\.php - [R=404,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
ErrorDocument 404 /404.php
RewriteRule ^i(/.*)?/company /company [L,NC]
# disable directory browsing
Options All -Indexes
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|svn|7z|zip|rar|gz|tar)$">
Order Allow,Deny
Deny from all
</FilesMatch>
我希望你能帮助我!谢谢!
答案 0 :(得分:0)
如评论中所述,如果contact.php
不存在,您可能会获得此重定向循环。
RewriteEngine On RewriteRule ^config\.php - [R=404,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/$ $1.php RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
尝试将前几行更改为(假设此.htaccess
文件位于文档根目录中):
RewriteEngine On
RewriteRule ^config\.php - [R=404,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php [L]
这只是在重写之前首先检查文件是否存在。我还在这两个指令中添加了L
(last
) - 我无法看到以后的任何规则都依赖于这些指令吗?