我有一个托管网站,其中包括一个安全的注册和购买部分,可以访问付费内容。如果 url 的格式不是 www.domainname.com,则 SSL 证书验证将失败。如果在 url 中找不到 www,我正在研究使用 mod_rewrite 规则进行重定向。这可行,但随后重定向到安全页面失败并出现 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]
我不确定这是否是我可以解决的问题,或者我必须等待托管服务提供商解决这个问题。
正如已经指出的那样,您只能在中央配置中使用 RewriteEngine,而不能在 .htaccess 中使用。由于错误不是它无法识别 RewriteEngine,因此您可以确定 mod_rewrite 已安装。您无法确定的是您的虚拟主机是否启用了 RewriteEngine。最好的办法就是尝试一下。
如果您托管的站点是动态的,您可以添加一些代码来检查 $SERVER_NAME 并进行适当的重定向,但如果您没有一个可以添加代码的地方,这可能会太费力。
否则,我会说你被困在等待你的提供者。
如果您可以修改您的中央配置,您可以轻松地做到这一点,而无需安装任何额外的模块,也无需使用 mod_rewrite。我发现当有更简单的做事方式时,人们会花费很长时间尝试使用 mod_rewrite。
如果您需要多个主机进行重定向,您可以向顶级虚拟主机添加额外的“ServerAlias”行。
看来你不能在那里使用 rewriteengine 。如果您无法更改您的 apaChe 配置,您唯一可以尝试的是删除“RewriteEngine on”并期望 mod_rewrite 在服务器范围内启用
如果您可以更改 apache conf,请将 RewriteEngine 移到那里或添加“AllowOverride all”