У меня есть сервер Apache2.4 с общедоступным каталогом в /var/www/html
. В этом каталоге у меня есть сайт Wordpress с этим .htaccess
:
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
На тот же уровень на сайте wp есть подкаталог с RESTful API /var/www/html/api/
и временную целевую страницу в /var/www/html/temp/
Я бы хотел добиться:
когда пользователь посещает mydomain.com
или www.mydomain.com
, он должен увидеть целевую страницу в temp
как это был корень
когда пользователь посещает сервер с обычным IP-адресом, он должен увидеть блог wordpress (т.е. xxx.xxx.xxx.xxx/
отображается как корень блога) и должен обращаться к api таким же образом (xxx.xxx.xxx.xxx/api/...
)
Я перепробовал много комбинаций в .htaccess
например:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ temp [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
но безрезультатно. Какие-либо предложения? Заранее спасибо.
Прежде всего, если у вас есть доступ к конфигурации сервера, вам не следует использовать .htaccess, поскольку он замедляет ваш Apache. Кроме того, с этим намного проще справиться с двумя отдельными виртуальными хостами.
1) /etc/apache2/sites-enabled/000-default
(для IP и неуказанных имен хостов):
<VirtualHost *:80>
DocumentRoot /var/www/html
</VirtualHost>
2) /etc/apache2/sites-enabled/example.com
для ваших example.com и www.example.com.
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/temp
</VirtualHost>