centos mod rewrite centos 8
如何开启Apache Rewrite功能
一、Ubuntu默认未开启Rewrite支持
apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便。下面看一下如何开启Rewrite模块,当用户需使用301重定向、伪静态等Rewrite功能时,一般都习惯于使用.htaccess文件配置,比如下面的301重定向:
Options+FollowSymLinks
RewriteEngine on
RewriteCond%{HTTP_HOST} ^abc.com [NC]
RewriteRule ^(.*)$ $1 [L,R=301]
配置完成后,使用/etc/init.d/apache2 reload命令加载生效,这时,如果未开启Rewrite功能,则会出现500错误(浏览器显示),查看LOG错误如下:
[Sun Jan 30 02:41:29 2011] [alert] [client 12.34.56.78]/srv/www/abc.com/public_html/.htaccess: Invalid command'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
说明需要开启Rewrite模块加载,加载开启过程如下。
二、手动开启加载Rewrite
1、使用终端工具连接服务器,输入管理员帐号和密码
2、执行加载Rewrite模块:
a2enmod rewrite
执行后,会提示OK和重启Apache命令(/etc/init.d/apache2 restart)。
3、参照上文的目录配置,做个启动链接(下次启动自动加载):
ln-s/etc/apache2/mods-available/rewrite.load/etc/apache2/mods-enabled/rewrite.load
执行后会在mods-available目录下创建一个快捷方式,连接到mods-enabled下rewrite模块。
4、重启apache:
/etc/init.d/apache2 restart
注意:如果使用的是apache默认网站目录(一般是类似于/var/www文件夹),没有创建单独的自己配置文件,可能还需要修改/etc/apache2/sites-available/default这个文件,把其中的AllowOverride None修改为AllowOverride All,因为default配置里还默认关闭.htaccess重载,打开后.htaccess才会生效。
三、如何判断Rewrite已经开启
1、检查确认Rewrite模块加载
本文测试是在CentOS 6系统上,路径为:/etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
如果前面有注释就去掉即可,重启APACHE。
2、检查确认目录Rewrite打开
Rewrite库加载不代表我们的.htaccess文件就能生效,还需要专门打开指定目录的AllowOveride开关,脚本如下:
<Directory/var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
其中AllowOverride只能定义在Directory这个Section里,具体用法可参考apache官方说明(下文链接),以上脚本一般放在httpd.conf或/etc/httpd/conf.d/vhost.conf下面,尽量更网站配置的:
<VirtualHost...>....</VirtualHost>
定义在一起,方便维护。
3、测试Rewrite功能
以下为.htaccess测试实例:
# BEGIN
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase/
RewriteRule.*$
</IfModule>
#END
测试方法,拷贝保存为.htaccess,上传到网站根目录下,访问网站任何路径页面,均会跳转到本博客,说明Rewrite已生效。
阿里云上的centos 7.2怎么yum安装php 5.6
因之前通过网易的 centos镜像,将阿里云的 centos升级到最新版了,乘自己的项目尚未开始正式开发,遂将所有的相应环境都升级到最高。
查看 centos版本:
[root@iZ23d~]# cat/etc/centos-release
CentOS Linux release 7.2.1511(Core)
1、删除之前的 php版本:
[root@iZ23d~]# yum remove php* php-common
Loaded plugins: langpacks
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
No Match for argument: php-5.4.16
No Match for argument: php-5.4.16.tar.gz
No Match for argument: php-7.0.1RC1
No Match for argument: php-7.0.1RC1.tar.gz
No Match for argument: phpMyAdmin-4.4.0.tar.gz
No Match for argument: php-common
No Packages marked for removal
2、rpm安装 Php7相应的 yum源:
[root@iZ23d~]# rpm-Uvh
Retrieving
warning:/var/tmp/rpm-tmp.LhJKKR: Header V4 RSA/SHA1 Signature, key ID 62e74ca5: NOKEY
Preparing...################################# [100%]
package webtatic-release-7-3.noarch is already installed
3、直接yum安装php7:
[root@iZ23d~]# yum install php70w
Loaded plugins: langpacks
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Resolving Dependencies
--> Running transaction check
。。。【省略】
Warning: RPMDB altered outside of yum.
Installing: php70w-common-7.0.0-1.w7.x86_64 1/3
Installing: php70w-cli-7.0.0-1.w7.x86_64 2/3
Installing: php70w-7.0.0-1.w7.x86_64 3/3
Verifying: php70w-7.0.0-1.w7.x86_64 1/3
Verifying: php70w-common-7.0.0-1.w7.x86_64 2/3
Verifying: php70w-cli-7.0.0-1.w7.x86_64 3/3
Installed:
php70w.x86_64 0:7.0.0-1.w7
Dependency Installed:
php70w-cli.x86_64 0:7.0.0-1.w7 php70w-common.x86_64 0:7.0.0-1.w7
Complete!
4、检查 php版本:
[root@iZ23d~]# php-v
PHP 7.0.0(cli)(built: Dec 2 2015 20:42:32)( NTS)
Copyright(c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright(c) 1998-2015 Zend Technologies
[root@iZ23d2e6hoqZ~]#
以上显示安装成功!
5、重启 Apache,查看 phpinfo:
[root@iZ23d~]# systemctl restart httpd.service
检查phpinfo:
PHP Version 7.0.0
SystemLinux iZ23d 3.10.0-229.11.1.el7.x86_64#1 SMP Thu Aug 6 01:06:18 UTC 2015 x86_64
Build DateDec 2 2015 20:43:38
Server APIApache 2.0 Handler
Virtual Directory Supportdisabled
Configuration File(php.ini) Path/etc
Loaded Configuration File/etc/php.ini
Scan this dir for additional.ini files/etc/php.d
Additional.ini files parsed/etc/php.d/bz2.ini,/etc/php.d/calendar.ini,/etc/php.d/ctype.ini,/etc/php.d/curl.ini,/etc/php.d/exif.ini,/etc/php.d/fileinfo.ini,/etc/php.d/ftp.ini,/etc/php.d/gettext.ini,/etc/php.d/gmp.ini,/etc/php.d/iconv.ini,/etc/php.d/json.ini,/etc/php.d/phar.ini,/etc/php.d/shmop.ini,/etc/php.d/simplexml.ini,/etc/php.d/sockets.ini,/etc/php.d/tokenizer.ini,/etc/php.d/xml.ini,/etc/php.d/zip.ini
PHP API20151012
PHP Extension20151012
Zend Extension320151012
Zend Extension BuildAPI320151012,NTS
PHP Extension BuildAPI20151012,NTS
Debug Buildno
Thread Safetydisabled
Zend Signal Handlingdisabled
Zend Memory Managerenabled
Zend Multibyte Supportdisabled
IPv6 Supportenabled
DTrace Supportenabled
Registered PHP Streamshttps, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip
Registered Stream Socket Transportstcp, udp, unix, udg, ssl, sslv3, sslv2, tls, tlsv1.0, tlsv1.1, tlsv1.2
Registered Stream Filterszlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, bzip2.*, convert.iconv.*
This program makes use of the Zend Scripting Language Engine:
Zend Engine v3.0.0, Copyright(c) 1998-2015 Zend Technologies
Configuration
apache2handler
Apache VersionApache/2.4.6(CentOS)
Apache API Version20120211
Server Administratorxxxxxx@xxxxxx.com
Hostname:Portxxxx.xxxxx.xxx:0
User/Groupapache(48)/48
Max RequestsPer Child: 0- Keep Alive: on- Max Per Connection: 100
TimeoutsConnection: 60- Keep-Alive: 15
Virtual ServerYes
Server Root/etc/httpd
Loaded Modulescore mod_so http_core mod_access_compat mod_actions mod_alias mod_allowmethods mod_auth_basic mod_auth_digest mod_authn_anon mod_authn_core mod_authn_dbd mod_authn_dbm mod_authn_file mod_authn_socache mod_authz_core mod_authz_dbd mod_authz_dbm mod_authz_groupfile mod_authz_host mod_authz_owner mod_authz_user mod_autoindex mod_cache mod_cache_disk mod_data mod_dbd mod_deflate mod_dir mod_dumpio mod_echo mod_env mod_expires mod_ext_filter mod_filter mod_headers mod_include mod_info mod_log_config mod_logio mod_mime_magic mod_mime mod_negotiation mod_remoteip mod_reqtimeout mod_rewrite mod_setenvif mod_slotmem_plain mod_slotmem_shm mod_socache_dbm mod_socache_memcache mod_socache_shmcb mod_status mod_substitute mod_suexec mod_unique_id mod_unixd mod_userdir mod_version mod_vhost_alias mod_dav mod_dav_fs mod_dav_lock mod_lua prefork mod_proxy mod_lbmethod_bybusyness mod_lbmethod_byrequests mod_lbmethod_bytraffic mod_lbmethod_heartbeat mod_proxy_ajp mod_proxy_balancer mod_proxy_connect mod_proxy_express mod_proxy_fcgi mod_proxy_fdpass mod_proxy_ftp mod_proxy_http mod_proxy_scgi mod_proxy_wstunnel mod_ssl mod_systemd mod_cgi mod_perl mod_php7
以上显示 php7安装成功!
如何开启apache的重写功能
开启apache的重写功能步骤如下:
1、关于rewrite模块的调用:
Apache 2.x中URL重写,是通过mod_rewrite.so来实现的,所以您要查看您的Apache是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf中已经调用了这个模块。在大多数主流发行版中,Apache 2.x是把rewrite模块已经编入进去了。比如我用的是Slackware。Apache 2.x的配置文件,放在/etc/httpd目录下。
在 httpd.conf中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是 mod_rewrite.so。
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so或 LoadModule rewrite_module lib/apache2/modules/mod_rewrite.so如果前面有#号,您要去掉。对于大多数发行版来说,Apache 2的模块一般是位于如下的两个位置 usr/lib/apache2/modules或/usr/lib/httpd/modules如果在httpd中打开调用rewrite_module的设置,查看一下是不是能调用了,要通过 httpd-M的参数来查看;#/usr/sbin/httpd-M
如果发现有如下一行,说明模块已经能被调用了
rewrite_module(shared)
2、设置DocumentRoot的Directory:
在Apache 2.x中,我们会看到 DocumentRoot设置的一行。这行就是存放网页程序的地方。比如LinuxSir.Org存放在/opt/www目录中。那么我们就要设置 DocumentRoot为如下的。
DocumentRoot"/opt/www"然后我们再还要对 DocumentRoot做针对性的行为设置。在一般的情况下,httpd.conf会给一个默认的。如果你要改 DocumentRoot的路径,同时也要改针对DocumentRoot的Directory的设置,也就是
<Directory"DocumentRoot所设置的路径">
比如我们把DocumentRoot的路径改为了"/opt/www",那我们也要把Directory做针对性的行为设置也要改成这个路径。
<Directory"/opt/www">
Options FollowSymLinks
#AllowOverride None注:把这行前面加#号,然后加下面的一行,也就是 AllowOverride ALL
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>我们把AllowOverride的参数设置为ALL,表示整台服务器上的,都支持URL规则重写。Apache服务器要读每个网站根目录下的.htaccess文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则,则不会有任何效果。在一般的情况下,成熟的Web服务器应用套件,都支持URL重写的,比如drupal和joomla。当我们用这些程序时,会发现在安装包中有.htaccess中有这个文件。我们把Apache配置好后,只是需要在这些程序的后台打开此功能就行了。
3、重启httpd服务器:
在一般情况下,在各个发行版中,都有httpd服务器启动脚本,比如
#/etc/rc.d/rc.httpd restart注:Slackware Linux
#/etc/init.d/apache2 restart注:ubuntu、Debian等;
#/etc/init.d/httpd start注:Fedora、Redhat、CentOS
以上方法就可以了