Criar um host virtual no ambiente Windows é muito trabalhoso. Você tem que criar a pasta do site, editar httpd.conf, hosts e outros enfeites. Para automatizar parte disso, decidi tentar criar um arquivo em lote para automatizar parte disso. Aqui está o que eu descobri para começar:
@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
Agora, ao executar este script, ocorre um erro de sintaxe na parte httpd.conf. Tenha em mente que sou bastante novo nisso, então provavelmente é algo óbvio. Então, onde foi que eu estraguei tudo?
Responder1
sinais feios <>|&
devem ser escapados em lote com um sinal de intercalação ^
, tente isto:
@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