Das Erstellen eines virtuellen Hosts in einer Windows-Umgebung ist sehr mühsam. Sie müssen den Site-Ordner erstellen, httpd.conf, Hosts und so weiter bearbeiten. Um einiges davon zu automatisieren, habe ich beschlossen, eine Batchdatei zu erstellen, um einiges davon zu automatisieren. Hier ist, was mir als Erstes eingefallen ist:
@ECHO OFF
::location of vhosts
SET BASEURL=D:\web\vhosts\
:sitenameprompt
::ask for a sitename
set /p sitename="Enter Sitename: " %=%
echo Before IF
IF EXIST %BASEURL%%sitename% echo The specified site folder already exists! Choose another.
IF EXIST %BASEURL%%sitename% goto sitenameprompt
IF NOT EXIST %BASEURL%%sitename% echo Creating folder
IF NOT EXIST %BASEURL%%sitename% MD %BASEURL%%sitename%
echo Adding virtualhost to httpd.conf
pause
(
echo ###%sitename%###
echo <VirtualHost *:80>
echo ServerAdmin admin@%sitename%
echo DocumentRoot "%BASEURL%%sitename%"
echo ServerName %sitename%.dev
echo ServerAlias %sitename%.dev
echo <Directory "%BASEURL%%sitename%">
echo Options Indexes FollowSymLinks Includes ExecCGI
echo Order allow,deny
echo Allow from all
echo </Directory>
echo </VirtualHost>
) >>D:\web\xampp\apache\conf\extra\httpd-vhosts.conf
pause
echo Restarting apache
::httpd -k restart
Wenn ich dieses Skript jetzt ausführe, tritt im Teil httpd.conf ein Syntaxfehler auf. Bedenken Sie, dass ich ziemlich neu darin bin, also ist es wahrscheinlich etwas Offensichtliches. Also, wo habe ich es vermasselt?
Antwort1
Hässliche Zeichen <>|&
müssen im Batch mit einem Caretzeichen maskiert werden ^
. Versuchen Sie Folgendes:
@echo off
(
echo ###%sitename%###
echo ^<VirtualHost *:80^>
echo ServerAdmin admin@%sitename%
echo DocumentRoot "%BASEURL%%sitename%"
echo ServerName %sitename%.dev
echo ServerAlias %sitename%.dev
echo ^<Directory "%BASEURL%%sitename%"^>
echo Options Indexes FollowSymLinks Includes ExecCGI
echo Order allow,deny
echo Allow from all
echo ^</Directory^>
echo ^</VirtualHost^>
) >>D:\web\xampp\apache\conf\extra\httpd-vhosts.conf