gpt4 book ai didi

linux - 启用 mod_rewrite AllowOverride All 的 Bash 脚本

转载 作者:太空狗 更新时间:2023-10-29 11:04:32 25 4
gpt4 key购买 nike

我正在远离 AMPPS/MAMP,并希望构建一个尽可能接近生产环境的开发环境。

因此,我在安装了 CentOS 6.4 64 位 os box 的 Mac 上使用 Vagrant/VirtualBox。

在我的 vagrant 文件中,我有一个配置脚本:

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>

最佳答案

使用 Linux SED 命令搜索和替换两个模式之间的行

另一个不错的解决方案是使用 SED 命令来搜索和替换两个模式之间的线。在您的情况下,模式将是:

'<Directory "/var/www/html">' and </directory>'

通过这种方式,您只替换 html 目录中的“AllowOverride None”行 (<Directory "/var/www/html">)而不是在您的 httpd.conf 文件中包含“AllowOverride None”的每一行。

命令 SED 支持这种形式的模式范围:

sed '/startpattern/,/endpattern/ <sed-commands>' file

在你的例子中,这变成了:

sed -i '/<Directory "\/var\/www\/html">/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' /etc/httpd/conf/httpd.conf

-i 选项用于就地编辑文件。如果不使用选项 -i,那么修改后的输出将打印在屏幕上,文件不会被修改!

关于linux - 启用 mod_rewrite AllowOverride All 的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com