1

.htaccessに問題があり、URLを正常に書き換えることができましたが、コンテンツが読み込まれなくなりました。

以下は私のhtaccessファイルです。

すべての.htmlページ(サイトは.html静的ページで構成されています)の拡張子を削除することを目指しています。ただし、SEOがこれらの変更の影響を受けないように、.htmlURLを新しいURLに301リダイレクトする必要があります。

例:

  • オリジナル:www.example.co.uk/page.html
  • 望ましい:www.example.co.uk/page/

ただし、元のURLが新しいURLをリダイレクトすることが重要です。

Options +FollowSymLinks
RewriteEngine on

# REDIRECT yourdomain.com TO www.yourdomain.com
RewriteCond %{HTTP_HOST} !^www.example.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [L,R=301]

RewriteRule (.+)\.html?$ http://www.example.co.uk/$1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(([^/]*/)*[^/.]+)$ $1.html [L]

上記のhtaccessを試し、以下のバリエーションも試しましたが、どちらも期待どおりに機能しませんでした。どんな助けでも大歓迎です。

Options +FollowSymLinks
RewriteEngine on

# REDIRECT yourdomain.com TO www.yourdomain.com
RewriteCond %{HTTP_HOST} !^www.example.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [L,R=301]

RewriteRule (.+)\.html?$ http://www.example.co.uk/$1/ [R=301,L]
4

1 に答える 1

0

あなたは2つのことを変える必要があります。

  1. リダイレクトループを防ぐために、リダイレクトの直後にこれを追加します。

    RewriteCond %{ENV:REDIRECT_STATUS} 200
    RewriteRule ^ - [L]
    
  2. 最後のルールを次のように変更します。

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} ^/(.*?)/?$
    RewriteCond %{DOCUMENT_ROOT}/%1\.html -f
    RewriteRule ^ /%1.html [L]
    
于 2012-09-04T05:11:18.320 に答える