Вот мой виртуальный хост:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName policy.domain.com
ServerAlias www.policy.domain.com
DocumentRoot /policy
ErrorLog /policy/error.log
CustomLog /policy/custom.log combined
<Directory /policy/>
Options +IncludesNOEXEC
AllowOverride None
Order allow,deny
allow from all
# redirect non www to www
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</Directory>
</VirtualHost>
Я пробовал разные настройки, но страницы на www не появляются. Тем не менее, удаление php работает хорошо, когда я удаляю условие без www на www. Чтобы быть конкретным, apache перенаправляет не www на www, но на www показывает ошибку «сервер не найден».
Ваша проблема (фактический вопрос), похоже, что ваши записи DNS неверны для www.policy.domain.com. В качестве примечания… Согласно документации Apache, вам, вероятно, не следует использовать для этого mod_rewrite.
http://httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect На приведенной выше странице указано, что перезапись мода не должна использоваться для перенаправления определенных местоположений на другой поддомен.
правильное использование, вероятно, предполагает разбиение policy.domain.com и www.policy.domain.com на отдельные виртуальные хосты и использование директивы перенаправления в зависимости от ситуации.
наконец, поскольку нет подробностей о том, ПОЧЕМУ вам нужна эта настройка, рекомендуется заменить HTTP_HOST статическим www.policy.domain.com.
и напишите наконец: похоже, что тур error_logs может быть читаемым в Интернете ... Это задумано? Вы приняли меры для их защиты?