.htaccess - 使用 SSL 和文件扩展名重写对非 www 的 htaccess

标签 .htaccess ssl

我有一个重写 .php 文件扩展名的网站: http://example.com/about.php 成为 http://example.com/about

我还将 www.domain.com 重定向到非 www。

现在我要把它移到 SSL,所以我想保留这 2 条规则并将它全部重定向到 https。

这是我目前拥有的:

# Redirect to non www version
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule (.*) https://example.com/ [R=301,L]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^index.php / [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteRule ^(.*)$ $1.php
ErrorDocument 404 /404.php

如何在没有太多重定向的情况下做到这一点?提前致谢!

最佳答案

像这样尝试:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L,NE] 

RewriteRule ^index.php / [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteRule ^(.*)$ $1.php
ErrorDocument 404 /404.php

关于.htaccess - 使用 SSL 和文件扩展名重写对非 www 的 htaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50607302/

相关文章:

带有主机名的 Apache 虚拟主机设置

node.js - 如何在 443 中为 apache 和 Node 配置 https 支持?

.htaccess - jquery-mobile 支持的浏览器列表(用于 .htaccess)?

php - .htaccess 在 ubuntu 服务器上无法正常工作

Apache mod_rewrite : force www only if not in localhost

apache - 通过 Htaccess 从 Url 中删除文件夹的子文件夹?

php - 我如何 gzip 我的网络文件

ssl - 使用 ESP8266 的 SSL 连接失败

ssl - Golang Web 服务器在 crypto/tls.(*block).reserve 泄漏内存

ssl - Joomla 没有正确强制 ssl