2017-09-26 11 views
1

今日、私は新しいドメイン名を指しているドメインがないので、私は新しいドメイン名を指していません。私は今、ubuntu 16.04でサーバーをセットアップしました。以前はCentos 7でした。私は.htaccessと私の仮想ホストを取得するためにすべてを試しました。ここで私はすべてのファイルをリンクしました!Apacheの設定エラー - .htaccessが動作していないようです

.htaccess https://pastebin.ubuntu.com/25622957/ 
000-default.conf https://pastebin.ubuntu.com/25622958/ 
apache2.conf https://pastebin.ubuntu.com/25622964/ 

私の質問はここで間違って私のセットアップを持っており、目標は、任意のドメインは、それが自動的にmydomain.comに書き換えます私の原点に指摘されている場合、私は確認するが何であるか - 私はまた私の起源IPを持つようにしたいですまた、メインサイトへのアクセスを拒否するか、または書き換えます。私はまた、私の書き換えが異なるブラウザ間で動作しているかどうかを確認する方法もわかりません。異なる動作が起こります。

+0

あなたはmod_rewriteのを有効にしていますか? Ubuntu 16.04ではデフォルトでは有効になっていません。 'sudo a2enmod rewrite'を実行していなければ' sudo service apache2 restart'を実行してください。また、私は個人的に私のAllowOverrideステートメントを必要最小限に抑えたいと思っています。書き換えを有効にする必要がある場合は、 'AllowOverride FileInfo'だけが必要です。 – blendenzo

+0

こんにちは@blendenzo - 私はすでにat2nmodの書き換えを有効にしていますが、それが動作しているかどうかは分かりません。また、私のコードを使って2番目の点を説明してください。 – InfamyStudio

+0

@blendenzo - 私がAllowOverride FileInfoをする必要があると言います - 私はあなたが文を制限するために1つのモジュールをロードするだけで何を意味するのか理解していますが、FileInfoは何を宣言していますか? – InfamyStudio

答えて

1

(MYDOMAINはstackoverflowの上の記事では許可されていないので、私は、この答えでexample.comを使用しました)

あなたの.htaccessファイルにはいくつかの問題があります。まず、この行を見て:

RewriteCond %{HTTP_HOST} !^http://example.com$ 

あなたが "のhttp://" を含めないでください。

RewriteCond %{HTTP_HOST} !^example.com$ 

第二に、それは、代わりにこのように読む必要がありますので、あなたは、{HTTP_HOST}テストしているとき、この行を見て:

RewriteCond %{HTTPS_HOST} !^https://example.com$ 

私は前に、このようなHTTPSのために、誰のテストを見たことがない、と私もmod_rewrite documentationでHTTPS_HOSTを見つけることができません。私はHTTPSを要求する複数の一般的な方法を知っています。ここではそれらのいくつかですが、一つだけを使用する必要があります。だから、すべて一緒になって

# Methods of checking the port 
RewriteCond %{SERVER_PORT} !80$ #True if traffic came in on HTTP port 80 
RewriteCond %{SERVER_PORT} !^443$ #True if traffic did not come in on HTTPS port 443 

# Methods of checking the HTTPS status 
RewriteCond %{HTTPS} off #True if HTTPS is off 
RewriteCond %{HTTPS} !=on #True if HTTPS is not on 

、以下の書き換えルールは、あなたが欲しいものを行う必要があります。

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L] 
+0

は本当にうまく動作します! - この書き直しで、RewriteRule ^(。*)$ https://example.com% {REQUEST_URI} [R = 301、L]は{REQUEST_URI}です。 – InfamyStudio

+0

はい、まさに{REQUEST_URI}と同じです。したがって、彼らが 'http:// example 'に行くことを試みた場合。com/about_us/'彼らは' https:// example.com/about_us/'に転送されます。注目に値する:上記のルールは "www.example.com"を処理しません。それを捕まえたい場合は、最初の行を 'RewriteCond%{HTTP_HOST}!(www \。)?example.com $'に変更します。これはオプションの "www"をチェックします。 (私もそれを含める答えを更新するかもしれません) – blendenzo

+0

私の雲のフレアページのルール - 私は任意のwww.example.comがhttps://example.comにリダイレクトされることを述べるルールをセットアップしました - しかし、これは{REQUEST_URI}を引き継ぎません。 – InfamyStudio

関連する問題