我有一个.htaccess:
Options -MultiViews
#Rewrite queries from google to the right files
RewriteEngine On
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*) /fragments/%1.html
在我的服务器(标准LAMP debian)上,它可以完美运行。 一旦我将其上传到主机(1& 1),我就会收到500错误,并且每1&1的自己的策略都无法检查错误日志。
技术支持花了2周的时间来回答我的支持请求,当他们这样做时,他们指向了一个描述mod_rewrite的通用页面。
任何人都可以在重写规则/条件中发现语法错误,并最终提供另一种方法来执行该规则的操作吗?
答案 0 :(得分:0)
500错误意味着服务器设置出现问题(500 - 内部服务器错误)。
有可能:
1)您的服务器不支持.htaccess文件覆盖主机设置
2)未启用重写模块
3)htaccess中重写的语法不正确
据我所知,您的代码是正确的。那么可能是1或2选项。
我建议:
1)用下面包装你的重写代码(这将检查mod-rewrite是否打开)
<IfModule mod_rewrite.c>
...
</IfModule>
2)从.htaccess
删除所有内容并尝试清空(如果仍然是500 - 不允许覆盖)
3)我在代码中看不到DirectoryIndex your_index_file
。你没有省略吗?
答案 1 :(得分:0)
使用以下内容:
Options -MultiViews
#Rewrite queries from google to the right files
RewriteEngine On
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*) http://mydomain.com/fragments%1.html?
解决了这个问题。