Mod重写不适用于SSL

时间:2012-04-28 17:13:43

标签: php apache mod-rewrite

这是我的重写代码:

## File Security
<FilesMatch "\.(htaccess)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

#### Apache directory listing rules ####
DirectoryIndex index.php index.htm index.html
IndexIgnore *

#### Rewrite rules for SEO functionality ####

<IfModule mod_rewrite.c>
RewriteEngine On

#RewriteCond %{SERVER_PORT} 80
#RewriteRule ^(.*)$ https://www.genyx.co.uk/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)\.html?$ index.php?seo_path=$1 [L,QSA]

</IfModule>

但它不适用于SSL页面,例如:

http://www.genyx.co.uk/terms-and-conditions.html

https://www.genyx.co.uk/terms-and-conditions.html

有人能帮助我让它发挥作用吗?

2 个答案:

答案 0 :(得分:3)

编辑:

http://www.genyx.co.uk/ - &gt;显示一些内容

https://www.genyx.co.uk/ - &gt;显示默认的Apache站点&#34;它可以工作!&#34;

因此SSL服务器具有不同的DocumentRoot。如果你改变它,它应该按预期工作。

顺便提一下,请检查您的SSL证书。我认为您必须添加中间证书,否则您的某些访问者会收到有关该站点未被可信实例签名的警告。

编辑:如果您的SSL服务器一切正常或证书链不完整,您可以check by yourself

编辑2:

您的证书提供商对intermediate certificates有一个很好的描述。 here是下载它的地方。请参阅下文,了解如何根据已安装的证书文件进行安装。

# Apache configuration for specific virtual host ...
# start SSL/TLS
SSLEngine on
# set signed certificate file
SSLCertificateFile /etc/apache2/ssl/domain_certificate.crt
# set private key file
SSLCertificateKeyFile /etc/apache2/ssl/domain_certifikate.key
# set intermediate certificate / to complete the chain to the root certificate
SSLCertificateChainFile /etc/apache2/ssl/chain_certificate.crt

答案 1 :(得分:1)

我会检查这些规则的位置。我怀疑您可能将它们放在虚拟主机部分或SSL vHost不匹配的其他位置。