2016-05-18 4 views
0

私は本当に下記のあなたの助けに感謝します。私はグーグル・グーグルとテスト・コードでエラーを試行していますが、私はゆっくりと物事を理解していると信じていますが、結果と学習の開発の両方でファスト・トラック・アシスタンスに感謝します。.htaccessで悩む(Godaddy Linux Hosting)

私は現在、GoDaddyは通じapacheのLinuxサーバ上の共有リソース上にホストされているウェブサイトを持っています。私は、次のことを達成しようとしています。 -

1)WWWに非WWWトラフィックをリダイレクトします。

2)の.htmlファイルの拡張子を削除し、ウェブアドレスを末尾にスラッシュを追加します。

私は現在以下のコードを持っています。リダイレクトが機能し、末尾のスラッシュも機能しています。しかし、私はどのように私はコードでこの問題を解決して行くん

www.swiftcomm.co.uk/contact/;-すなわちサブページで404エラーを取得していますか?

Options +FollowSymlinks -MultiViews -Indexes 
RewriteEngine on 
# Redirect to domain with www. 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .* http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
# Same for HTTPS: 
RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
# Ensure all directory URLs have a trailing slash. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !\/$ 
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$ 
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301] 
# Same for HTTPS: 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !\/$ 
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$ 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301] 
+1

使用しているコードの多くは多少不要です。 HTTPSのwwwルールは1つにまとめることができます。また、スラッシュの末尾にHTTPSチェックを行う必要はありません。しかし、私の質問はこれです:あなたは、HTMLの拡張子を削除し、後続のスラッシュを強制したい。 htmlファイルはまだ存在していますか、それらに書き直しますか?したがって、 '/ contact /'を要求すると '/ contact.html'が提供されます。 (あなたの意図はあまり明確ではないので、私は尋ねる必要があります。) –

+0

マイク、応答ありがとう。私は最終的にswiftcomm.co.uk/contactを入力するとwww.swiftcomm.co.uk/contact/にリダイレクトすることを強制しようとしています。これはルートディレクトリのcontact.htmlページで処理されます。これはもっと意味があると思う? –

+0

それは、すぐに答えます。 –

答えて

0

ファイル全体を置き換えることができます。次のコードを試してください。コメントは、各ルールセットが何をするかを説明します。

Options +FollowSymlinks -MultiViews -Indexes 
RewriteEngine on 
RewriteBase/

# Force www. prefix - http/https 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L] 

# Remove .html extension suffix from URI only if it matches an existing file. 
# Add trailing slash simultaneously. 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{THE_REQUEST} \s\/(.+)\.html\s [NC] 
RewriteRule^%1/ [R=302,L] 

# Force trailing slash if it has'nt been forced already. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} ^\/(.+[^/])$ 
RewriteRule^%{REQUEST_URI}/ [R=302,L] 

# Rewrite non-existing files to their .html counterparts. 
# If the .html file does not exist, Apache will gracefully degrade to a 404. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ $1.html [L] 
+0

マイク、あなたの時間と援助にもう一度感謝します。コードを.htaccessファイル内のすべてのものに置き換えました。サイトとホームページが正しく読み込まれていることを確認しました。サブページに問題があります。 www.swiftcomm.co.uk/servicesは外部コンテンツ(Java、CSS、Images)をロードせずにロードします。私はinspect要素を実行し、私がかなりの数のERR_TOO_MANY_REDIRECTSとERR_EMPTY_RESPONSEを取得していることに気付きました。 –

+0

ERR_EMPTY_RESPONSEはリンクが間違った場所を指し示しているように思われます。たとえばhttp://www.swiftcomm.co.uk/services/img/menu-bg.jpg/リソースを読み込めませんでした。 imgフォルダがルートディレクトリにあるためです。http://www.swiftcomm.co.uk/img/menu-bg.jpg/ –

+0

サイトのルートを基準にしてアセットを参照する必要があります。ですから、各 'src'の前に'/'を追加するだけです。 –

関連する問題