我的博客在 IP 为 10.10.10.10(不是真实的)的服务器上运行。
服务器上仅有一个该博客的虚拟主机。
这是 Apache 配置:
VirtualHost star:80
服务器名称 blog.example.com
服务器别名 blog.example.com
服务器管理员[电子邮件保护]
DocumentRoot /var/www/
RewriteEngine 在
RewriteCond %{HTTP_HOST} ^[^.]+.example.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+).example.com/(.*) /var/www/$1
DirectoryIndex index.php
目录 /var/www/ AllowOverride 所有
顺序 Deny,Allow
允许所有
/Directory
/VirtualHost
我的 DNS blog.example.com 指向这个 IP 地址 10.10.10.10 。
当我第一次加载 blog.example.com 时,它加载正确,没有任何问题。但每当我点击链接时,它都会显示如下网址http://10.10.10.10/login.phpETC。
我是新手。请帮我设置一下。
重写规则有问题吗?
答案1
问题是,生成 URL 的应用程序似乎正在创建绝对 URI,而由于您的服务器配置,您的服务器无法处理这些 URI。
我想到两种可能的解决方案:
正确配置应用程序,以便它可以创建相对 URI,或者如果确实需要,则创建具有正确主机的绝对 URI。
肮脏的解决方案是制定一个ServerAlias
指令来处理这个问题:
ServerAlias 10.10.10.10
用这种方法解决问题也是可行的,但不建议mod_rewrite
这样做。但这种风格太糟糕了,我就不解释了。