Bash脚本启用mod_rewrite AllowOverride All

我正在远离AMPPS / MAMP,并希望尽可能靠近生产环境build立一个开发环境。

因此,我在安装了CentOS 6.4 64bit操作系统的Mac上使用了Vagrant / VirtualBox。

在我的stream浪文件中,我有一个configuration脚本:

config.vm.provision :shell, :path => "bootstrap.sh" 

而目前,我的bootstrap.sh如下所示:

 #!/usr/bin/env bash # Install the remi repos sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # Update the repositories sudo yum -y update sudo yum -y --enablerepo=remi,remi-php55 install php-pecl-apc php-cli php-pear php-pdo php-mysqlnd php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml 

现在我安装了我的apache服务器,我想我的bash脚本编辑/etc/httpd/conf/httpd.conf文件并将AllowOverride None更改为AllowOverride All在我的html目录中。

 <Directory "/var/www/html"> ... Options Indexes FollowSymLinks ... # Need to change this to AllowOverride All via bash script AllowOverride None ... Order allow,deny Allow from all </Directory> 

这里有一个很好的指导:

 sed "$(grep -n "AllowOverride None" input.file |cut -f1 -d:)s/.*/AllowOverride All/" input.file > output.file 

细目:

  • grep -n "AllowOverride None" input.file返回匹配模式的行, grep -n "AllowOverride None" input.file是行号
  • cut -f1 -d:剪切字符串并返回遇到的第一个数字
  • sed "$LINE_NUMBERs/.*/AllowOverride All/" input.file将“AllowOverride All”放在行n° $LINE_NUMBER

然后你只需要将输出重定向到你想要的文件。

Et瞧!