手短に
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 エントリが後で追加されましたが、すべて効果がありません。
この動作の原因は何ですか? 他に確認すべきことはありますか?解決策を見つけるために非常に多くの資料を検索しましたが、問題や欠落は見られません。どんな助けでも大歓迎です!