为wordpress配置apache url重定向/apache url rewrite for wordpress-阿里云开发者社区

开发者社区> 开发与运维> 正文

为wordpress配置apache url重定向/apache url rewrite for wordpress

简介:

文章来源:http://degula.com/wordpress/200903166/wordpress-apache-rewrite.html#more-166

测试环境: windows xp/apache 2.2.11/wordpress2.7

看了很多文章都说静态url便于搜索引擎的收录,昨天晚上就将degula 的链接全都改为静态链接了,我的链接格式是:/%category%/%year%%monthnum%%post_id%/%postname%.html,效果还不错,现在是万事具备,只等收录了:)

今天小D 在自己的winxp上配置wordpress永久链接时发现页面找不到,报404错误.想了一下应该是Apache url rewrite默认没有开启的原因.找到原因就开始动手了.这里把主要步骤和遇到的一些疑点写出来,希望能对大家有所帮助.

首先需要在配置httpd.conf以启用url rewrite功能:

将#LoadModule rewrite_module modules/mod_rewrite.so前面的注销去掉然后重启apache,在命令行使用httpd -M查看当前模块情况.如有rewrite_module(shared)说明模块已经成功加载.

注:网上许多文章提到了httpd.conf文件中需要有这一行:Addmodule mod_rewrite.c,其实在这里是不需要的,因为apache已经把mod_rewrite.c编译进去了.下面是关于mod_rewrite.c的一点说明:

The AddModule and ClearModuleList directives no longer exist. These directives were used to ensure that modules could be enabled in the correct order. The new Apache 2.0 API allows modules to explicitly specify their ordering, eliminating the need for these directives.

As long as you have mod_rewrite.c ompiled into Apache you should be ready to roll. Use the LoadModule if you enabled the module as a DSO .

到这里apache url rewrite的模块已经加载了.要想使它生效还需要配置.htaccess文件.

配置目录的allowoverwrite属性:

在Apache 2.x 中,我们会看到 DocumentRoot设置的一行。这行就是存放网页程序的地方。比如存放在 c:/www 目录中,那么我们就要设置 DocumentRoot为如下的:

DocumentRoot "c:/www"

然后我们再还要对 DocumentRoot做针对性的行为设置。在一般的情况下,httpd.conf 会给一个默认的。如果你要改 DocumentRoot的路径,同时也要改针对DocumentRoot的Directory的设置,也就是

<Directory "DocumentRoot中设置的路径">

比如我们把DocumentRoot的路径改为了 “c:/www”,那我们也要把 DocumentRoot做针对性的行为设置也要改成这个路径.

注意不要 修改一下default的配置

<Directory />
    Options FollowSymLinks   
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

 

而是修改这里:

<Directory “c:/www”>
    #
    # Possible values for the Options directive are “None”, “All”,
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that “MultiViews” must be named *explicitly* — “Options All”
    # doesn’t give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be “All”, “None”, or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>

把AllowOverride 的参数设置为ALL,表示整台服务器上的,都支持URL规则重写。Apache 服务器要读每个网站下的家目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则,则不会有任何效果。在一般的情况下,成熟的Web 服务器应用套件,都支持URL重写的,比如drupal和joomla 。当我们用这些程序时,会发现在安装包中有 .htaccess中有这个文件。我们把Apache配置好后,只是需要在这些程序的后台打开此功能就行了.

下面是WordPress安装包中的.htaccess文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

# END WordPress

到这里应该一切OK了吧,访问刚才404的网址,果然可以了.WPer们,还等什么,快把你的blog链接也和谐了吧.

Apache文档:

中文文档:http://www.phpx.com/man/Apache-2/mod/mod_rewrite.html
中文文档:http://www.kreny.com/docs/apache2.0/misc/rewriteguide.html
英文文档:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

参考文献:

<apache url rewrite 重写入门>
<Apache Url Rewrite(mod_rewrite)的使用>
<Apache 2.x 服务器中的URL重写的配置和应用>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章