1

私はちょうどSSL証明書を追加したウェブサイトを持っています。私は、HTTPSバージョンにすべての非HTTPS URLをリダイレクトするように.htaccessファイルには、以下の追加:301 HTTPSにリダイレクトすると、ホームページ以外の非HTTPSページがホームページにリダイレクトされる

:私もWWWのバージョンにリダイレクトするために、サイトのすべての非のwwwバージョンを望んでいた

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://www.myurl.co.uk [R=301,L] 

ので、私は次を追加しました

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^myurl.co.uk 
RewriteRule ^(.*)$ https://www.myurl.co.uk/$1 [R=301,L] 

次に、SEOを手助けするために、私はURLの書き換えを有効にしています(私が使用しているJoomlaで)ので、https://www.myurl.co.uk/index.php/aboutの代わりにhttps://www.myurl.co.uk/aboutと表示されます。

しかし、私のサイトへのリンクがクリックされると(たとえばGoogleから)、古い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つの要件を満たすための

+1

RewriteRule ^(。*)$ https://www.myurlに 'RewriteRule ^(。*)$ https://www.myurl.co.uk [R = 301、L] 'を変更します。 .co.uk/$ 1 [R = 301、L] 'のように2番目のルール(' $ 1'がキー)です。次に、これらの仕組みを読んでください。 :-) – ceejayoz

+0

とあなたのキャッシュをクリアすることを忘れないでください!キャッシュされたURLのバージョンが表示されている可能性があります。 – Lag

+0

@ceejayozは完璧に動作しました。どうもありがとう。 – hypnocyst

答えて

1

は、この単一のルールを使用することができます(http -> https, non-www -> www, /index.php/ removal)つまりしかしは、このルールは他のすべてのルール前の最上部に配置されていることを確認します

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のルールを使用しないでください。
  • この変更をテストしている間は、ブラウザキャッシュを完全にクリアしてください。
関連する問題