Apache 301重定向到HTTPS,导致所有非主页、非HTTPS页面重定向到主页

Apache 301重定向到HTTPS,导致所有非主页、非HTTPS页面重定向到主页,apache,.htaccess,redirect,mod-rewrite,http-status-code-301,Apache,.htaccess,Redirect,Mod Rewrite,Http Status Code 301,我有一个网站,我刚刚添加了SSL证书。我在.htaccess中添加了以下内容,以将所有非HTTPS URL重定向到HTTPS版本: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://www.myurl.co.uk [R=301,L] 我还希望所有非www版本的网站重定向到www版本,因此我添加了以下内容: RewriteEngine On RewriteBase / RewriteCond %{HTTP_H

我有一个网站,我刚刚添加了SSL证书。我在.htaccess中添加了以下内容,以将所有非HTTPS URL重定向到HTTPS版本:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.myurl.co.uk [R=301,L]
我还希望所有非www版本的网站重定向到www版本,因此我添加了以下内容:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^myurl.co.uk
RewriteRule ^(.*)$ https://www.myurl.co.uk/$1 [R=301,L]
然后,为了帮助SEO,我打开了URL重写(在Joomla中,我正在使用),所以现在我的URL显示为
https://www.myurl.co.uk/about
而不是
https://www.myurl.co.uk/index.php/about

然而,我注意到,当点击一个链接到我的网站时(例如,来自谷歌的链接),仍然使用旧的URL结构,它总是会将访问者带到主页,而不是他们点击的页面。因此,点击
www.myurl.co.uk/index.php/about
的访问者应该被带到
https://www.myurl.co.uk/about
但是它们会被直接带到
https://www.myurl.co.uk
(主页)

我尝试为网站上的每个页面添加以下内容:

Redirect 301 /index.php/about https://www.myurl.co.uk/about
…但这并没有解决问题


我对.htaccess非常缺乏经验。我哪里出了问题?

为了满足所有3个要求,即
(http->https,非www->www,/index.php/删除)
您可以使用这一条规则,但请确保将此规则放在所有其他规则之前。

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{REQUEST_URI} ^/index\.php/. [NC]
RewriteRule ^(?:index\.php/)?(.*)$ https://www.myurl.co.uk/$1 [R=301,L,NE]
  • 避免多个重定向规则不仅对SEO有好处,而且对客户体验也有好处
  • 使用基于
    mod_rewrite
    的规则时,不要使用
    Redirect
    RedirectMatch
    规则
  • 测试此更改时,请确保完全清除浏览器缓存

Change
RewriteRule^(.*)$https://www.myurl.co.uk [R=301,L]
重写规则^(.*)$https://www.myurl.co.uk/$1[R=301,L]
与第二条规则类似(关键是
$1
)。然后仔细阅读这些是如何工作的。:-)别忘了清理你的缓存!您可能会看到URL的缓存版本。@ceejayoz工作得很好。谢谢。