2

手短に

WORKS FINE: www.exampledomain.co.uk{/with-any-url}
GIVES 404 ERROR: exampledomain.co.uk{/with-any-url}

詳細に

linux/apache2 で実行されているサイトで「www.」という問題が発生しています。URL は正常に機能していますが、「www.」削除すると、すべての URL に対して 404 が返されます。ドメインは dnsstuff.com チェックでエラーを示さず、www と通常のドメインは同じ IP アドレスを指しています。

cmd を使用してドメインと www. どちらも同じ IP に解決され、応答します。

このコードを Web ルートの .htaccess ファイルに実装しました。非 www リクエストに:

Options +FollowSymlinks
Options All -Indexes
RewriteEngine on
RewriteBase /

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

ただし、これも機能しません。正確な書き換えルールがテストされ、別のサイトで機能して「www.」を強制します。接頭辞を付けます。

これは、使用中の vhosts conf ファイルです。

<VirtualHost *:80>
  ServerAdmin exampleuser@exampledomain.co.uk
  ServerName  www.exampledomain.co.uk
  ServerAlias exampledomain.co.uk

  DirectoryIndex index.php index.html
  DocumentRoot /home/exampleuser/public/example.co.uk/public_html
     <Directory /home/exampleuser/public/example.co.uk/public_html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
    </Directory>

  LogLevel warn
  ErrorLog  /home/exampleuser/public/example.co.uk/log/error.log
  CustomLog /home/exampleuser/public/example.co.uk/log/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName exampledomain.co.uk
    Redirect permanent / http://www.exampledomain.co.uk/
</VirtualHost>

サーバー名とエイリアスは、ここに示されているものとは逆の順序で定義されており (変更の間に apache が再起動されます)、「永続的なリダイレクト」の 2 番目の vhosts エントリが後で追加されましたが、すべて効果がありません。

この動作の原因は何ですか? 他に確認すべきことはありますか?解決策を見つけるために非常に多くの資料を検索しましたが、問題や欠落は見られません。どんな助けでも大歓迎です!

4

2 に答える 2

0

今日、以前のテスト サーバー インスタンスから、 /etc/apache2/sites-enabled/に別のvhosts conf ファイルがあることに気付きました。exampledomain.co.uk.confファイルは/home/exampleuser/public/ example.co.uk /public_htmlを指していたので、内部を確認したところ、ファイルには空の vhosts 宣言が含まれていました。

<VirtualHost *:80>
</VirtualHost>

このセクションがハッシュでコメント化または削除された場合、または conf ファイルがexample.co.uk.conf<VirtualHost>以外の名前に変更された場合、非 www. リクエストは、www. 要求し、問題は解決されました。

ただし、このexample.co.uk.confがexampledomain.co.ukへのリクエストには選択され、www.exampledomain.co.ukへのリクエストには選択されない理由については明確ではないため、誰かがこの回答を拡張できる場合は、編集またはコメントしてください. ありがとう!

于 2015-09-21T10:26:24.770 に答える
0
Options -Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
于 2015-09-19T19:10:30.397 に答える