更改apache网站根目录DocumentRoot位置的批处理

使用需求

因为我的工作需要,我总是需要更换网站根目录,来调试不同的网站。我本机的环境是xampp,更换apache根目录这件事需要更改httpd.conf文件。每次都要打开再改,嫌麻烦,想找一个尽量简便的方法。由此写了这个批处理,希望实现直接输入路径,自动更改文件。

这里要提示一下,我的XAMPP安装在D:\xampp\,我的网站根目录想安排在F:\www\下的子文件夹中切换。

比如有时候是F:\www\aaa\,有时候是 F:\www\bbb\

这里说的是本机调试,而非服务器生产环境,本文只适于windows。

解决方法

由于我并没有研究批处理中的正则替换,所以稍微绕一下。

1. 找到httpd.conf文件位置,并重命名为httpd.conf.txt,并记录路径。

如:我的xampp中httpd.conf文件位置在:
D:\xampp\apache\conf\httpd.conf
那么我就复制一下,再后面加个txt,记录一下路径,即:
D:\xampp\apache\conf\httpd.conf.txt

2.  编辑httpd.conf.txt,找到DocumentRoot位置的两行,改为实际路径名为:wwwdir

如:我的httpd.conf.txt文件中,原来的内容是:

# …………
#
DocumentRoot "/xampp/htdocs"
<Directory "/xampp/htdocs">
    #
    # …………

改为

# …………
#
DocumentRoot "F:/www/wwwdir"
<Directory "F:/www/wwwdir">
    #
    # …………

3. 新建文本文件,复制以下代码,改拓展名为.bat

@echo off
:: 设置httpd.conf文件路径,如 D:\xampp\apache\conf\
:: 切记末尾必须由\结束
set confdir=D:\xampp\apache\conf\
:: 设置示例文件路径,如 D:\xampp\apache\conf\httpd.conf.txt
set examplefile=D:\xampp\apache\conf\httpd.conf.txt
::
:: 以下内容不需更改
setlocal Enabledelayedexpansion
mode con cols=45 lines=3
color 0C

set /p inputdir=Project Floder Name : 
del /f /s /q "%confdir%httpd.conf"
for /f "tokens=*" %%a in (%examplefile%) do (
   set var=%%a
   set var=!var:wwwdir=%inputdir%!
  echo !var!>>"%confdir%httpd.conf"
)
endlocal

4. 最后配置一下就可以了,已经在代码里写了,配置两个位置confdirexamplefile

预览

双击运行后,可见以下界面:

输入要更改的文件夹名,回车以后即完成修改,不做任何提示。

点赞