.htaccess переписать правила для www.example.com и example.com -> this.example.com

#apache #.htaccess #mod-rewrite #apache2

#apache #.htaccess #мод-переписать #apache2

Вопрос:

Я бы хотел, чтобы мой сайт перенаправлял весь трафик с www.example.com и example.com или anythingelse.example.com для this.example.com Это то, что у меня есть в моем файле .htaccess, который расположен в каталоге /www / example.com /public_html

 RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://this.example.com/ [R=301,L]
  

Это работает, когда я посещаю this.example.com но когда я посещаю http://example.com это перенаправляет меня на example.com/public_html и www.example.com вообще не перенаправляет! Однако this.example.com работает. Это настройка моего виртуального хоста:

 <VirtualHost 12.34.56.78:80>
 ServerAdmin webmaster@example.com
 ServerName example.com
 ServerAlias this.example.com
 ServerAlias www.example.com
 DocumentRoot /srv/www/example.com/public_html/
 ErrorLog /srv/www/example.com/logs/error.log
 CustomLog /srv/www/example.com/logs/access.log combined
</VirtualHost>
  

Я заметил в своем журнале ошибок при посещении: example.com он говорит «Файл не существует: /srv/www/example.com/public_html/public_html»

Ответ №1:

Решение, предоставленное requinix на разработанном

 RewriteEngine On
RewriteCond %{HTTP_HOST} !this.example.com
RewriteRule ^ http://this.example.com%{REQUEST_URI} [L]