HTTP_HOST (www.domainname.com) に基づいて動作する RewriteRule を作成しましたが、ドメイン名部分 (domainname.com) のみに基づいて動作するようにしたいと考えています。
さらに明確にするために
フォルダ構造は次のとおりです/var/www/domainName.com
。
このルールをApacheの設定ファイルに記述すると
RewriteRule ^/js/(.*) /%{HTTP_HOST}/js/$1 [L]
www.mydomain.com を使用してサイトにアクセスすると、/var/www/www.domainName.com
存在しないフォルダーを見つけようとします。
したがって、上記のルールを変換して、HTTP_HOST から「www」を削除する必要があります。
答え1
同じサイトを 2 か所で利用できるようにするよりも、リクエストをリダイレクトすることをお勧めします。トラフィックをリダイレクトするには、新しい VirtualHost を作成します。
<VirtualHost *:80>
ServerName www.domainName.com
Redirect / http://domainName.com/
</VirtualHost>
または、www. プレフィックスの存在を検出してユーザーをリダイレクトするルールのセットを他のルールの上に追加します。
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule /(.*) http://%1/$1 [R,L]
リダイレクトなしで両方のドメイン名にサイトを表示したい場合は、RewriteCond を使用してドメイン名だけを抽出し、それを RewriteRule で %1 として利用できるようになります。
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*) [NC]
RewriteRule ^/js/(.*) /%1/js/$1 [L]
答え2
それができるかどうかは疑問ですが、適切なディレクトリへのリンクを作成する方が簡単ではないでしょうか?
ln -s yourdomain.com www.yourdomain.com
答え3
使ってみましたか%{DOCUMENT_ROOT}
?
Servername
また、ディレクトリ構造で使用するのと同じ名前を vhost に設定している場合も可能です。例:
<VirtualHost *:80>
DocumentRoot /var/www/domainame.com
ServerName domainame.com
ServerAlias www.domainame.com
</VirtualHost>
%{SERVER_NAME}
その後、書き換えルールで使用できます。
答え4
あなたの質問を理解したので、ドキュメントルート適切なディレクトリへ:
DocumentRoot /var/www/domainName.com