【问题标题】:htaccess redirction from www to non-www url with ssl certificationhtaccess 使用 ssl 认证从 www 重定向到非 www url
【发布时间】:2013-10-04 13:33:38
【问题描述】:

我想用 ssl 证书将我的网站表单 www 重定向到 非 www url。 我已经写好了代码

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://\%1/$1 [R=301,L]

这可行,但如果 url 有任何获取请求,它将被重定向到主页。

【问题讨论】:

  • 您选择的标签所建议的php 的连接在哪里?
  • 不要用[R=301] 测试你的重写规则。这将创建一个 permanent 重定向,并且浏览器会缓存这些重定向。如果您将 a 永久重定向到 b,浏览器将缓存它,并且在下一次尝试获取 a 时,浏览器不会向服务器请求 a,而是立即加载 b。不用说,浏览器因此不知道您对重写规则所做的更改,以防它没有按预期工作。请改用[R](临时重定向),直到您的所有重写程序都完全按照您的意愿执行。

标签: php .htaccess http mod-rewrite https


【解决方案1】:

您的$1 不会解析为任何值,直到您在RewiteRule 中捕获一些值:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

PS:我做了一些额外的小修改。

【讨论】:

  • ^/ 在 PerDirectory 上下文中(如 .htaccess)将不匹配任何请求。应该是^(.*)$。我不是 100% 确定 \%1 在这里是否正确。
  • 对不起,我的错:我确实没有意识到我们在这里谈论愚蠢的.htaccess 文件。感谢您的提示,我已经解决了!
【解决方案2】:

试试这个:

将 www 网址重定向到非 www

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com [NC]
RewriteRule ^(.*) https://yoursite.com/$1 [R=301,L]  

您可以使用的替代代码:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^example\.com
RewriteRule ^(.*) https://example.com/$1 [R=301,L]

Reference site

【讨论】:

  • @Sumurai8 我可以知道吗?
  • 您只需要一条规则,在撰写本文时,第二条规则包括http://
  • @Sumurai8 我已经更新了我的答案,http:// 写错了。谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 2014-11-24
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
相关资源
最近更新 更多