我有一个托pipe网站,其中包括一个安全的注册和购买部分,提供付费内容的访问。 如果URL不是www.domainname.comforms,SSL证书validation将失败。 我正在寻找使用mod_rewrite规则redirect,如果WWW在URL中找不到。 这工作,但是然后redirect到安全页失败,500错误。 检查ssl_error日志我看到:
[Wed Jul 29 21:20:32 2009] [alert] [client xx.xx.xx.xx] /vservers/domainname/htdocs/.htaccess: RewriteEngine not allowed here, referer: http://www.domainname.com/index.php?option=com_content&view=category&id=2&Item=9
.htaccess我们试过了:
# mod_rewrite in use RewriteEngine On RewriteCond %{HTTP_HOST} ^domainname.com [NC] RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
我不知道这是我能解决的问题,还是必须等待托pipe服务提供商解决问题。
正如已经指出的,你只能在中央configuration中使用RewriteEngine,而不能在.htaccess中使用。 由于错误不是它不能识别RewriteEngine,所以你可以确定mod_rewrite已经安装了。 你不能确定的是RewriteEngine是否为你的虚拟主机启用。 最好的做法是尝试一下。
如果您所托pipe的网站是dynamic的,则可以添加一些代码来检查$ SERVER_NAME并进行适当的redirect,但是如果您没有可以添加代码的地方,则这可能会花费太多。
否则,我会说你坚持等待你的提供者。
如果你可以修改你的中央configuration,你可以很容易的做到这一点,不用安装任何额外的模块,也不需要使用mod_rewrite。 我发现人们花费了很多时间尝试使用mod_rewrite时,有更简单的方法做事情。
<VirtualHost *:80> ServerName example.com Redirect / http://www.example.com </VirtualHost> <VirtualHost *:80> ServerName www.example.com . . . </VirtualHost>
如果您需要多个主机redirect,则可以将其他“ServerAlias”行添加到顶级虚拟主机。
看来你不能在那里使用rewriteengine。 如果你不能改变你的apaCheconfiguration,唯一可以尝试的是删除“RewriteEngine on”,并期望mod_rewrite在服务器范围内启用
如果您可以更改apache conf,请将RewriteEngine移动到那里或添加“AllowOverride all”