.htaccess 将非www重定向到带有https的www,不包括cdn和其他子域

.htaccess 将非www重定向到带有https的www,不包括cdn和其他子域,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,现在我有这个密码 RewriteEngine On RewriteBase / # remove the .html extension RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP RewriteRule (.*)\.html$ $1 [R=301] # remove index and reference the directory RewriteRule (.*)/index$ $1/ [R=301] # remove trail

现在我有这个密码

RewriteEngine On
RewriteBase /

# remove the .html extension
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.html\ HTTP
RewriteRule (.*)\.html$ $1 [R=301]

# remove index and reference the directory
RewriteRule (.*)/index$ $1/ [R=301]

# remove trailing slash if not a directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# forward request to html file, **but don't redirect (bot friendly)**
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.html [L]

#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

它工作得非常好,但是它正在将我们的cdn映像从cdn.domain.com/img.jpg重定向到www.domain.com/img.jpg。如何防止这种情况发生?

您可以通过在规则前面添加cdn的条件测试来防止这种情况发生。没有替代品

RewriteCond %{HTTP_HOST} ^cdn\.
RewriteRule ^ - [L]
此规则保留URL的原样-

-冲刺

破折号表示不应进行替换 现有路径未被触及地通过。这是用来 当需要在不更改的情况下应用以下标志时 这条路

并停止进一步重写

[L]标志导致mod_rewrite停止处理规则集


它仍在将cdn.domain.com/url/img.jpg重定向到www.domain.com/url/img.jpg我要在哪里添加代码,您能在操作中检查我刷新的代码吗。当您将此规则放在开头时,然后所有对cdn.domain.com的请求都不会被重写。我在RewriteBase/下添加了您的代码,但它似乎仍在将cdn.domain.com/img重定向到www.domain.com/img