2011-08-17 93 views
0

我在共享托管计划上设置了一个站点,所以我被困在使用Apache和.htaccess文件中。我有2个RewriteRules定义。这两条规则在运行Apache的本地机器上完美工作。为什么我会在这些RewriteRules中出现500错误

的第一条规则是重写为/ CSS/的.css到/ WWW请求/ CSS/的.css 第二改写一切以/www/index.php

关于CSS的第一条规则/ JS文件是导致500错误,但我不明白为什么。我曾尝试这些规则的每一个不同的化身,总是得到一个500

RewriteEngine on 
RewriteBase/
RewriteRule ^(.*)\.(css|js) www/$1.$2 [L] 
RewriteRule ^(.*)$ www/index.php [L] 
+2

系统管理问题,如配置服务,属于在http:// serverfault .COM。是的,你可以在这里找到一些人,这只是因为没有足够的人来移动他们。 –

回答

0

因为你写你的规则,这样的方式,他们创造无限循环重写其阿帕奇具有在某个点突破,因此500内部服务器错误。如果你检查你的错误日志,你会看到确切的错误信息。

[L]标志不一定意味着“重写完成” - 它只是意味着“重写在这个迭代上完成 - 从开始重新开始”。

非常有用的信息:RewriteRule Last [L] flag not working?

解决你的问题 - 你需要添加一些条件,使已重写规则没有得到一次又一次的改写。这些规则应该做的工作适合你(可能的解决方案之一 - 这一切都取决于你如何实际项目设置):

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_URI} !^/www/ 
RewriteRule ^(.*)\.(css|js) www/$1.$2 [L] 

RewriteCond %{REQUEST_URI} !^/www/ 
RewriteRule ^(.*)$ www/index.php [L] 
+0

@ user897929所以..我的规定是否适合你? – LazyOne

相关问题