Wordpress的URL静态化其实是通过Apache的URL Rewrite功能实现的伪静态话。在开启这个功能后,blog的根目录会生成一个.htaccess的文件,通过这个文件的一些配置项,来实现URL静态化功能。默认创建的.htaccess内容如下:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
简单来说,就是将访问到非实际存在的文件或者目录的URL全部转向至index.php。index.php接受到这个URL后可以根据这个URL的某些部分来确定要访问的具体页面。
然而启用这个静态化之后,会发现Dremhost后台通过 analog 6.0搭建的访问日志分析工具会访问不到了,会直接跳出Wordpress theme的404页面。原因大概是因为这套系统的入口是http://yourdomain/stats/这样的URL,实际/stats/是在Dreamhost的Apache配置中通过Alias指令添加的虚拟目录,并不存在于站点目录下。然而.htaccess中已经通过URL Rewrite将不存在实际文件或路径的URL直接定向到index.php中去了,因此/stats/这个虚拟目录就无法被访问了。
解决办法自然是修改URL Rewrite的配置,让其额外对待/stats/这个URL。将.htaccess中的代码增加2行,变成如下即可:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(stats/|missing\.html|failed_auth\.html) [NC]
RewriteRule . - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
这样修改后/stats还会按照原有Dreamhost的配置访问,同时又不影响Wordpress的静态化功能。
此技巧来自Dreamhost的Wiki,另外还有其他Blog或CMS程序的配置方法,具体可以访问这个页面了解:http://wiki.dreamhost.com/index.php/Mod_rewrite
文章分类
- Cartoon and Anime (12)
- FreeBSD (12)
- Game (3)
- Hardware (12)
- IT (3)
- Joke (15)
- Life goes on (55)
- Linux (14)
- Music (9)
- Networking (35)
- Programming (4)
- Software (17)
- solaris (2)
- tips (1)
- Weblog (41)
- Windows (22)
按月归档
- May 2008 (3)
- April 2008 (3)
- March 2008 (3)
- February 2008 (3)
- January 2008 (2)
- December 2007 (3)
- November 2007 (10)
- October 2007 (12)
- September 2007 (8)
- August 2007 (7)
- July 2007 (10)
- June 2007 (12)
- May 2007 (14)
- April 2007 (14)
- March 2007 (18)
- February 2007 (11)
- January 2007 (8)
- December 2006 (12)
- November 2006 (13)
- October 2006 (5)
- September 2006 (9)
- August 2006 (13)
- July 2006 (13)
- June 2006 (16)
- May 2006 (21)
Weblog







