【发布时间】:2017-06-18 11:11:01
【问题描述】:
我有一个用于 www.example.com 的 SSL,还有一堆别名域(例如 mydomain.co.uk、otherdomain.com 等)停放在 cPanel 帐户上。
我想做的是对所有请求强制使用https://www.example.com。域之后的任何内容都应按原样附加(稍后也会在 .htaccess 中为 SEO 友好的 URL 重写)。
例如:-
http://example.com/page/2/
https://example.com/page/2/
http://www.otherdomain.com/page/2/
http://mydomain.co.uk/page/2/
都应该变成
https://www.example.com/page/2/
这几乎可以工作:-
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
但是可以一次性完成吗?此外,上面将查询字符串再次附加到 URL,例如:-
http://www.example.com/page/2/
最后是:-
https://www.example.com/page.php/2/?2/
搜索引擎友好的SEO部分是:-
Options +SymlinksIfOwnerMatch +MultiViews
RewriteRule ^(.*).php/(.*) $1.php?$2
应该保持不变。
IIRC,在我强制使用 SSL 之前,仅 www.example.com 的强制工作正常:-
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http%2://www.example.com/$1 [R=301,L]
非常感谢任何帮助!
【问题讨论】:
-
看起来很相似,但下面@starkeen 的回答给出了更好(如果不完美)的结果。建议的副本上的答案实际上对我不起作用,也许是由于我有 SEO 友好的添加?
-
规则实际上是相同的,这是该标签最常见的问题类型。你只是在帮助用废话填满SO。在所有其他重写发生之前,您是否将新代码放在首位?
-
是的,我把这个放在第一位。很抱歉用几个字节的文本填充 SO,如果您认为这是废话,很抱歉,但是尽管尝试了在 SO 找到的各种解决方案,但我没有解决我的问题,所以发布问题以防任何即将到来的答案可能会有所帮助我和其他人。这不就是我们在这里的原因吗???
-
SO 的目的是成为每个人解决问题的有用参考,而不仅仅是你的问题。可悲的是,它充满了“我找不到确切的解决方案而且我没有 RTFM”。问题。当您的问题不常见并且滚雪球时,这会更难找到相关的解决方案。 I doubt your problem has not been solved before.
标签: apache .htaccess ssl mod-rewrite