PHP本地实现多域名访问教程之Apache虚拟主机配置方法

PHP本地实现多域名访问教程之Apache虚拟主机配置方法,第1张

方法/步骤

1、首先修改C:\Windows\System32\drivers\etc目录下的

hosts

文件,用记事本打开,加入:

127.0.0.1

www.a.com127.0.0.1

www.b.com记得去掉前面的#

2、打开xampp\apache\conf\httpd.conf文件,搜索

“Include

conf/extra/httpd-vhosts.conf”,确保前面没有

#

注释符,也就是确保引入了

vhosts

虚拟主机配置文件。效果如下:

#

Virtual

hosts

Include

"conf/extra/httpd-vhosts.conf"

开启了httpd-vhosts.conf,默认a的httpd.conf默认配置失效(确保

httpd-vhosts.conf

文件里也开启了虚拟主机配置,见第3条),访问此IP的域名将全部指向

vhosts.conf

中的第一个虚拟主机。

3、在虚拟主机设置文件xampp\apache\conf\extra\httpd-vhosts.conf里设置:取消

NameVirtualHost

*:80

前面的

##,这样就启用了

vhosts.conf

,默认的httpd.conf默认配置失效。虚拟主机配置将只设置在httpd-vhosts.conf里。localhost

的目录默认配置记得也按此设置。

#

#

Use

name-based

virtual

hosting.

#

NameVirtualHost

*:80

#

#

VirtualHost

example:

#

Almost

any

Apache

directive

may

go

into

a

VirtualHost

container.

#

The

first

VirtualHost

section

is

used

for

all

requests

that

do

not

#

match

a

ServerName

or

ServerAlias

in

any

block.

#

ServerAdmin

postmaster@dummy-host.localhost

DocumentRoot

"I:/xampp/htdocs/"

ServerName

localhost

ServerAlias

localhost

ErrorLog

"logs/dummy-host.localhost-error.log"

CustomLog

"logs/dummy-host.localhost-access.log"

combined

ServerAdmin

postmaster@dummy-host1.localhost

DocumentRoot

"I:/xampp/htdocs/a"

ServerName

www.a.com

ServerAlias

www.a.com

ErrorLog

"logs/dummy-host1.localhost-error.log"

CustomLog

"logs/dummy-host1.localhost-access.log"

combined

ServerAdmin

postmaster@dummy-host2.localhost

DocumentRoot

"I:/xampp/htdocs/b/"

ServerName

www.b.com

ServerAlias

www.b.com

ErrorLog

"logs/dummy-host2.localhost-error.log"

CustomLog

"logs/dummy-host2.localhost-access.log"

combined

至此,XAMPP

的虚拟主机设置完毕,现在

访问

localhost

还是原来的

XAMPP

的帮助指南,访问

www.a.com

将指向到绑定的

a

目录,访问

www.b.com

将指向到绑定的

b

目录。

你的这个要根据你的需要来定:

第一种可能性:【你的这台服务器只有这一个主域名(是不是泛解析与些无关)】

那么这种情况,根本不用开后面的所谓URL重写,只要设定一个主目录就可以了,我估计你就是这一个吧,那保持默认就行了,不用动它。

第二种可能:【你的服务器有多个主域名,这个主域名只是你多个主域名的其中一个】

那么这种情况就必须使用URL重写来实现了,那接下来我给你说一下这个:

你的<Directory "D:/APMServ/www/htdocs/company">这一行,是将服务器的目录设置为D:/APMServ/www/htdocs/company

那么这个目录将成为你网站的根目录,从而会让你解析到这台服务器上的其它域名也会被链接到这个目录下来。

而且 php_admin_value safe_mode On 这行设置,是在<Directory>之中么?这不是乱用一气么?它应该直接隶属于<VirtualHost>的吧:

它应该这样使用:

<VirtualHost *:80>

php_admin_value open_basedir "/usr/local/apache/htdocs/www:/tmp"

php_admin_value safe_mode On

</VirtualHost>

另外,URL重写不要放到任何标签之中去

为了方便,你可以放到httpd.conf文件的最后面,这样容易寻找,也就是下面的这一段:

RewriteEngine on

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)

RewriteRule .* - [F]

另外,就算是你使用这一段URL重写好像也无法实现你的功能吧?

试试如下的重写规则:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^([a-z_0-9\-]+)\.chujushichang\.com$

RewriteRule ^(.*)$/company/$1 [L]

另外,如果重写了这条规则,就不要与去设定什么<Directory "D:/APMServ/www/htdocs/company">了,设置了之后反而会出问题。

因为这条规则就是为了只让chujushichang.com这个主域名下的所有二级域名,都对应到网站根目录下的company目录中去的。

————

这百度知道的编辑器真不是一般的不好用,换行不好用,鼠标拖远不好用,还莫名其妙地把我的文章顺序弄乱了。

这还是个“大”站!

1、打开文件:X:\Apache\conf\extra\httpd-vhosts.conf

2、比如我绑一个24.com到F:\www\24\,格式如下:

<VirtualHost *>

<Directory "F:/www/24">

Options -Indexes FollowSymLinks

Allow from all

AllowOverride All

</Directory>

ServerAdmin admin@24.com

DocumentRoot "F:/www/24"

ServerName 24.com:80

ServerAlias 24.com

ErrorLog logs/24.com-error_log

</VirtualHost>


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/60113.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-27
下一篇2023-02-27

发表评论

登录后才能评论

评论列表(0条)

    保存