这是我的虚拟主机:
<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 页面似乎没有出现。不过,当我删除非 www 到 www 条件时,php 删除效果很好。具体来说,apache 将非 www 重定向到 www,但在 www 处显示服务器未找到错误。
答案1
您手头的问题(实际问题)听起来像是您的 DNS 条目对于 www.policy.domain.com 不正确。相关说明....根据 Apache 文档,您可能不应该为此使用 mod_rewrite。
http://httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect 上述页面指定不应使用 mod rewrite 将特定位置重定向到不同的子域。
正确的使用可能涉及将 policy.domain.com 和 www.policy.domain.com 分成单独的虚拟主机,并根据需要使用重定向指令。
最后,由于没有说明为什么需要此设置,建议您用静态 www.policy.domain.com 替换 HTTP_HOST。
最后发帖:看来,错误日志可能可以通过网络读取……这是设计使然吗?您是否采取措施保护了它们?