首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有用于快速更改httpd.conf DocumentRoot目录的命令提示

是否有用于快速更改httpd.conf DocumentRoot目录的命令提示
EN

Stack Overflow用户
提问于 2014-02-10 22:36:32
回答 1查看 611关注 0票数 0

我在文件夹中有多个网站,我需要经常来回切换。每次我都必须转到httpd.conf文件来查找它们,并更改DocumentRootDirectory行。我想知道是否有更快的方法来做这件事,也许是通过cmd提示符?或者是我可以创建的php inc文件。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-02-11 22:16:55

你最好把你所有的站点都设置为Virtual Hosts。它们总是可用的,除了url之外,你不需要改变任何东西就可以单独访问它们。

HowTo:在WAMP中创建虚拟主机

在执行任何操作之前,请先确保APACHE和MYSQL工作正常!

在wamp目录结构之外创建一个新文件夹。例如

代码语言:javascript
复制
C:\websites\www

但这可以在运行wamp的PC可见的任何磁盘驱动器上。

在c:\websites中为要创建的每个站点创建子文件夹。例如:

代码语言:javascript
复制
C:\websites\www\site1
C:\websites\www\site2

编辑文件C:\wamp\bin\apache\apachex.y.z\conf\extra\httpd-vhosts.conf,其中x、y和z是您实际安装的apache的版本号。

注意:如果你要在2个或更多版本的apache之间切换,你必须依次在你的所有apache版本上进行切换。

建议:我喜欢使用sitename.dev格式来让我明白,我正在处理一个站点的本地主机开发副本,你可能更喜欢另一个符号,那好吧,在这种情况下,单词dev没有实际定义的含义,这只是我命名活动站点的开发版本的方式。

注意:删除或最好还是注释掉(使用第1列中的#)此文件中已存在的行。它们只是一些例子。

示例内容:

代码语言:javascript
复制
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

## must be first so the the wamp menu page loads when you use just localhost as the domain name
## Also NEVER change the security to anything other than Allow from 127.0.0.1 localhost ::1
## Then a drive by Ip address hack should return a 403 denied access
<VirtualHost *:80>
   DocumentRoot "C:/wamp/www"
   ServerName localhost
   ServerAlias localhost
   **Using Apache 2.2 syntax**
   <Directory  "C:/wamp/www">
      Order Deny,Allow
      Deny from all
      Allow from 127.0.0.1 localhost ::1
      ## For every ip in the subnet, just use the first 3 numbers of the subnet
      ## Check you actual subnet for the actual values to use here
      Allow from 192.168.0
   </Directory>

  **Using Apache 2.4 syntax**
  <Directory  "C:/wamp/www">
      Require local
      ## And possibly allow access from you local network
      ## Check you subnet for the actual values to use here
      Require ip 192.168.0
  </Directory>
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "C:/websites/www/site1"
    ServerName site1.dev
    ServerAlias www.site1.dev
    Options Indexes FollowSymLinks
    **Using Apache 2.2 syntax**
    <Directory "C:/websites/www/site1">
        AllowOverride All
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1 localhost ::1
        #If you want to allow access from your internal network
        # For specific ip addresses add one line per ip address
        #Allow from 192.168.0.nnn
        # For every ip in the subnet, just use the first 3 numbers of the subnet
        #Allow from 192.168.0
        # If you want to allow access to everyone
        #Allow from all
    </Directory>

    **Using Apache 2.4 syntax**
    <Directory "C:/websites/www/site1">
        AllowOverride All
        Require local
        #If you want to allow access from your internal network
        # For specific ip addresses add one line per ip address
        #Require ip 192.168.0.nnn
        # For every ip in the subnet, just use the first 3 numbers of the subnet
        #Require ip 192.168.0
        # If you want to allow access to everyone
        #Require all granted
    </Directory>

</VirtualHost>

根据需要添加任意多个,以便每个站点都有一个,并根据需要更改DocumentRoot、ServerName和任何其他参数。

这还允许您对配置进行特定于站点的更改。

注意:这将使WAMP管理器“在线”功能不再对这些新的vhost站点产生任何影响,因为每个站点的安全性现在都是vhost定义的一部分,所以让wamp离线。

如果要将一个或多个站点放到网上,则必须手动更改httpd-vhosts.conf文件中的允许命令。

要检查您的子网,请执行以下操作:启动命令窗口,然后运行

代码语言:javascript
复制
>ipconfig

在输出中查找行"Default Gateway“,并在Allow命令中使用第三个数字。

编辑您的httpd.conf文件并搜索这些行,它们位于文件底部附近。

代码语言:javascript
复制
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

删除此行上的“#”注释字符以包括新更改的vhosts,这将导致apache注册它们的存在。例如

代码语言:javascript
复制
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

在仍在编辑httpd.conf文件的同时搜索

代码语言:javascript
复制
#   onlineoffline tag - don't remove
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1

</Directory>

不要更改这些行!

在<\Directory>标记后添加以下内容,以保护新的C:\websites文件夹。

代码语言:javascript
复制
<Directory "C:/websites/">
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

这是为了在您的新目录结构上设置安全性,以便只允许从127.0.0.1 (localhost)访问这些新站点,除非从特定的VHOST中进行修改。附注:您的内部网络可能类似于192.168.x.y,请先检查您的系统!

现在,为了让你的浏览器知道如何访问这些新的域名,即site1.dev和site2.dev,我们需要告诉windows它们所在的IP地址。有一个名为HOSTS的文件,它是域名服务器(DNS)发明之前的遗留问题。这是一种给IP地址起一个好记的名字的方法,这当然是DNS服务器现在为我们所有人做的。

编辑您的HOSTS文件,该文件位于C:\windows\system32\drivers\etc中,该文件没有扩展名。

Windows保护此文件,因此您必须是管理员才能保存对此文件所做的更改。

如果您使用的是VISTA或Windows7/8,您可能认为自己是管理员,但您不是!

因此,要编辑此文件,您必须以特定方式启动编辑器或记事本,以获得管理员权限。为此,找到您的编辑器图标,并使用以下击键启动它:

Shift +右键单击其图标,这将显示一个菜单,单击项目"Run as Administrator",然后在将出现的质询对话框中单击"Allow“。

现在,您可以编辑hosts文件了,请将编辑器导航到c:\windows\system32\drivers\etc\hosts

将以下行添加到此文件中

127.0.0.1站点1.dev 127.0.0.1站点2.dev

注意:您需要在此文件中为每个新的虚拟主机添加一行。

一旦你保存了这些更改,你需要让windows刷新它的‘域名- ipaddress交叉引用’缓存。

为此,以管理员身份启动命令窗口(按住Shift键并在命令窗口图标上单击鼠标左键),然后运行这两个命令。

代码语言:javascript
复制
>net stop "DNS Client"
>net start "DNS Client"

注意:引号是必需的,因为服务名称中有一个空格。

为了让apache接受这些更改,您必须跳转(重新启动) Apache。

执行此操作的方式: Wamp管理器-> Apache ->服务->重新启动服务

您现在应该能够在浏览器中使用地址site1.dev来访问您的新站点。如果你已经有了一个网站代码,将你的网站代码复制到"C:/websites/xxxx“文件夹中,或者在"c:\websites\xxxx”文件夹中放置一个快速而简单的index.php文件来验证所有的工作。示例:

代码语言:javascript
复制
   <!DOCTYPE html>
   <html lang="en-US">
   <head>
   <meta charset="UTF-8">
   <title>SITE1</title>
   </head>
   <body>
   <?php
        echo '<div style="background-color:red;color;white;text-align:center;font-size:18px">HELLO FROM Site1</div>';
   ?>
   </body>
   </html>

故障排除:

如果您使用了新域名( site1.dev ),但未找到该站点。a.检查主机文件的更改。b.重启在windows中运行的DNS服务。这将缓存您在浏览器中使用的所有域名,以便浏览器不必在您每次重新使用域名时都查询DNS服务器。这可能已经缓存了你失败的尝试,但重新启动很容易,应该可以解决问题,而且比重新启动windows更快,这也应该是可行的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21680019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档