配置8080端口虚拟主机后,不加端口号访问异常求助
问题分析与解决办法
嘿,我来帮你捋清楚为啥不加:8080就访问不了你的虚拟主机,以及怎么解决这个问题~
核心问题根源
咱们平时访问不带端口的HTTP网址时,浏览器默认会用80端口发起请求,但你所有的虚拟主机都只绑定在了8080端口上。Apache在80端口上没有对应这些域名的虚拟主机配置,所以请求过来后找不到正确的站点,自然就显示异常了。
解决办法(分两种场景)
场景一:希望直接用域名(不带端口)访问(推荐)
这是最常规的做法,步骤如下:
- 第一步:检查Apache主配置文件(一般是
httpd.conf)里有没有Listen 80这一行,如果没有,就加上它(这是让Apache监听80端口的关键)。 - 第二步:修改你的
httpd-vhosts.conf,把每个<VirtualHost>块里的端口从8080改成80。举个例子,第一个虚拟主机修改后是这样的:
另外两个虚拟主机也按照这个方式,把端口改成<VirtualHost 127.0.0.1:80> ServerAdmin webmaster@danzuz.eu DocumentRoot "C:/xampp/htdocs/" ServerName danzuz.eu ServerAlias danzuz.eu ErrorLog "logs/danzuz.eu-error.log" CustomLog "logs/danzuz.eu-access.log" common <Directory "C:/xampp/htdocs/www/"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Require all granted </Directory> </VirtualHost>80就好。 - 第三步:重启Apache服务,之后你访问
danzuz.eu、wordpress1.danzuz.eu这些域名时,就不用再加:8080了。
场景二:必须保留8080端口监听(比如80端口被其他程序占用)
如果80端口被别的软件(比如IIS、迅雷之类的)占用了,没法用80端口,那可以试试这些操作:
- 如果你只是想让用户访问时不用手动加端口,可以用端口转发工具,把本地80端口的请求转发到8080端口(不过这需要额外的工具配置)。
- 或者,修改Apache的默认监听端口为8080:在
httpd.conf里找到Listen 80,改成Listen 8080。不过这种方式下,浏览器默认还是会用80端口请求,用户还是得手动加:8080,只是Apache只监听8080了。
额外小提醒
你的第一个虚拟主机里,DocumentRoot设置的是C:/xampp/htdocs/,但<Directory>配置的是C:/xampp/htdocs/www/,这可能会导致htdocs根目录下的文件没有访问权限,不过这和当前的端口问题无关,只是顺便提一下,你可以根据需要调整成一致的路径。
内容的提问来源于stack exchange,提问作者Danzuz




