这是我的重写代码:
## 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
有人能帮助我让它发挥作用吗?
答案 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不匹配的其他位置。