我有一个很大的问题导致我的整个Web根目录关闭(505内部错误)每个域都受到影响,即使htaccess文件只在一个目录中。我的文件结构以这种方式组织,因此每个域都是一个单独的文件夹:
web root
-- [domainA]
(domainA files like the .htaccess file)
-- [domainB]
-- [domainC]
(web root files)
我想实现我的路由系统,使用此.htaccess
代码在本地主机上一切正常:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
但是,我正在测试几个小时,使用相同的.htaccess
代码在我的远程服务器上进行路由工作。我上传了文件,当我在www.domainA.com
这样的主目录时,它也能正常工作。
但我点击www.domainA.com/signup
网站上的每个链接都会导致505 Internal Server Error
。整个域名甚至都没有响应很长时间。我必须从远程服务器中删除.htaccess
文件,并且可能在15-30分钟之后再次访问该文件。这也使得这个问题难以调试。此外,我的整个 Web根目录似乎也受到影响,因为所有其他域也无法访问(即使.htaccess
文件仅位于[domainA]
中的单独域文件夹中})。
然后我尝试仅将我的规则应用于名为fake-user
的特定用户代理:
RewriteCond %{HTTP_USER_AGENT} ^fake-user$
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
这种方式令人惊讶地在localhost上工作,我不明白为什么。显然,我不想将我的受众限制为名为fake-user
的用户代理与我的网站进行互动。所以目前所有其他用户都会“崩溃”我的网站。我希望得到一些解释可能导致此问题以及如何解决此问题以使其在所有用户的本地主机上工作?
答案 0 :(得分:1)
听起来它可能是递归,尝试用这个替换你的规则:
RewriteRule ^(?!index\.php$). index.php [NS,L]
只有在不同时才重写。