![仮想ホストの Apache 構成で永続的なリダイレクトが期待どおりに動作しない](https://rvso.com/image/762117/%E4%BB%AE%E6%83%B3%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AE%20Apache%20%E6%A7%8B%E6%88%90%E3%81%A7%E6%B0%B8%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%81%8C%E6%9C%9F%E5%BE%85%E3%81%A9%E3%81%8A%E3%82%8A%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%AA%E3%81%84.png)
同じ IP を指す複数のドメインがあります。RedirectPermanent は、ページが存在しない場合のみ、すべてのドメインで正常に機能し、Web サイトの 404 デフォルト ページが表示されます。実際に存在するページをブラウザに入力すると、その IP を指すすべてのドメインからそのページにアクセスできるため、リダイレクトは機能しません。
したがって、URL domaintoredirect1.com/page/not/existing を入力すると、domainiwant.com/page/not/existing が表示されます (リダイレクトは正常に動作しています)
domaintoredirect1.com/page/existingと入力してもリダイレクトは発生せず、URLはdomaintoredirect1.com/page/existingのままです。
なぜこうなった?
また、www をドメインの非 www バージョンにリダイレクトしたいのですが、この場合もリダイレクトは機能しません。両方のバージョンが表示され、リダイレクトは行われません。
また、別のドメイン拡張子 (.org から .com) にリダイレクトし、www をドメインの not www バージョンにリダイレクトしたいのですが、これらのケースでもリダイレクトが機能しません。notwww...com にリダイレクトされずに、www...org と notwww...org が表示されます。
これらの最後のケースでは、www のあるドメインとないドメインの両方が A レコードに登録されていることを確認しました (これが理由でしょうか?)。その他のケース (domainsiwanttoredirect) では、www バージョンが CNAME として登録されており、www バージョンにのみアクセスできます (www のないバージョンは www バージョンにリダイレクトされます)。
これはVirtulHost 構成利用可能なサイトで見つかりました
<VirtualHost *:80>
ServerName www.domaintoredirect1.com
ServerAlias domaintoredirect1.com
Redirect permanent "/" "https://domainiwant.com/en/about-us/domaintoredirect1/"
</VirtualHost>
<VirtualHost *:80>
ServerName www.domaintoredirect2.com
ServerAlias domaintoredirect.com
Redirect permanent "/" "https://domainiwant.com/en/"
</VirtualHost>
<VirtualHost *:80>
ServerName www.domainiwant.org
ServerAlias domainiwant.org
Redirect permanent "/" "https://domainiwant.com/"
</VirtualHost>
<VirtualHost *:80>
ServerName www.domainiwant.com
Redirect permanent "/" "https://domainiwant.com/"
</VirtualHost>
<VirtualHost *:80>
ServerName domainiwant.com
Redirect permanent "/" "https://domainiwant.com/"
</VirtualHost>
<VirtualHost *:80>
ServerName default
DocumentRoot /var/www/html
<Location />
Require all denied
</Location>
</VirtualHost>
私は追加しますssl_configuration ファイルまた
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName website-ws.domainIwant.com
SSLCertificateFile /etc/ssl/certs/domainIwant.com.22092020.pem
SSLCertificateKeyFile /etc/ssl/private/domainIwant-com.key
SSLCipherSuite stuff...
SSLProtocol stuff...
SSLCipherSuite stuff...
#SSLProxyEngine on
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.domainToRedirect1.com
ServerAlias domainToRedirect1.com
SSLCertificateFile /etc/ssl/certs/domainToRedirect1.crt
SSLCertificateKeyFile /etc/ssl/private/nginx_kmdevel.key
SSLCipherSuite stuff
SSLProtocol stuff
SSLCipherSuite stuff
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.domainIwant.com
SSLCertificateFile /etc/ssl/certs/domainIwant.com.22092020.pem
SSLCertificateKeyFile /etc/ssl/private/domainIwant-com.key
SSLCipherSuite stuff
SSLProtocol stuff
SSLCipherSuite stuff
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName domainIwant.com
SSLCertificateFile /etc/ssl/certs/domainIwant.com.22092020.pem
SSLCertificateKeyFile /etc/ssl/private/domainIwant-com.key
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
SSLProtocol -all +TLSv1.3 +TLSv1.2 +TLSv1.1
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA256 EECDH+aRSA+SHA256 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName www.domainIwant.it
ServerAlias domainIwant.it
SSLCertificateFile /etc/ssl/certs/domainIwant.it.2020.pem
SSLCertificateKeyFile /etc/ssl/private/domainIwant_2020.key
</VirtualHost>
<VirtualHost *:443>
ServerName www.domainToRedirect2.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias domainToRedirect2.com
SSLCertificateFile /etc/letsencrypt/live/www.domainToRedirect2.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.domainToRedirect2.com/privkey.pem
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName rcs.domainIwant.com
SSLCertificateFile /etc/ssl/certs/domainIwant.com.22092020.pem
SSLCertificateKeyFile /etc/ssl/private/domainIwant-com.key
SSLCipherSuite stuff
SSLProtocol stuff
SSLCipherSuite stuff
</VirtualHost>
</IfModule>
何が間違っているのでしょうか?
また、サーバー名のデフォルトつまり、apache_confファイルには参照がないので、Apacheの設定ファイルも
DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf