发布于 2013-06-05 21:09:39 UEANER

序言

Rewrite 主要的功能就是实现 URL 的重写,通过重写 URL 实现静态化(当然这是伪静态), 这样做的目的是便于搜索引擎和用户的理解,以提高搜索引擎的收录数量。

添加 Rewrite 模块

SUSE/openSUSE 下加载 Apache 的模块跟其他 Linux 系统不同,如 CentOS 下是可以直接 修改 httpd.conf 添加 LoadModule rewrite_module modules/mod_rewrite.so,或 打开前面的注释符,重启 Apache 即可。

而 SUSE/openSUSE 下按照 Apache 不同的功能分离出不同的"子配置文件",通过 Include 方式引入,这样做便于使用和管理 Apache 的各项功能。

openSUSE 下价格 Apache 模块的配置文件是: /etc/apache2/sysconfig.d/loadmodule.conf, 查看此文件,我们会发现文件上方的注释:

#
# Files in this directory are created at apache start time by /usr/sbin/rcapache2 
# Do not edit them!
#

# as listed in APACHE_MODULES (/etc/sysconfig/apache2)

此文件是在每次 Apache 重启时创建,Do not edit them! 所以如果我们手工编辑此文件添加 Rewrite 模块只是徒劳。 不过下面给出了,Apache 的模块配置在 /etc/sysconfig/apache2 文件的 APACHE_MODULES 参数,OK,动手配置。

# vi /etc/sysconfig/apache2

找到 APACHE_MODULES:
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php5 reqtimeout"
引号内的最后加上 rewrite 后为:
APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php5 reqtimeout rewrite"

重启 Apache 使之生效

# /etc/init.d/apache2 restart

重启之后可以看到 /etc/apache2/sysconfig.d/loadmodule.conf 文件多了一条记录:

LoadModule rewrite_module /usr/lib64/apache2-prefork/mod_rewrite.so

表示已加载。

配置 AllowOverride All,允许使用 .htaccess 文件

默认 AllowOverride None 不允许访问 .htaccess 文件 (如果你不允许访问 .htaccess 文件,可直接通过更改 Apache 配置文件使用 Rewrite 功能),改为 AllowOverride All:

   <Directory "/srv/www/htdocs">
       Options FollowSymLinks
       AllowOverride All
       Order deny,allow
       Allow from all
   </Directory>

重启 Apache:

# /etc/init.d/apache2 restart

现在我们可以通过 .htaccess 文件,使用 Apache Rewrite 功能, 如 CodeIgniter 隐藏 index.php :

# vi /srv/www/htdocs/.htaccess

添加以下内容:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond $1 !^(index\.php|static|opensearch\.xml|sitemap.xml)
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

到此你的 Apache 可以 Rewrite 了吗?

转载请注明出处。
本文地址:http://blog.aboutc.net/linux/36/opensuse-configure-apache-rewrite-to-allow-access-htaccess-file

评论:2

飞贼 2013-09-24 16:10:56
很好,顶一个
ueaner 2013-09-25 11:12:49
@飞贼: 多谢支持!
关闭高亮高亮 分享到新浪微博分享到新浪微博