我的博客.htaccess的设置方式是通过多个网址访问一个网页,并根据访问的网址显示不同的内容。
http://kn3rdmeister.com/category/blog/
http://kn3rdmeister.com/2012/
http://kn3rdmeister.com/2012/07/
所有人实际上都在使用http://kn3rdmeister.com/blog.php
。
.htaccess文件非常方便,因为我只需要使用不同的查询字符串重定向到一个页面(几乎曾经)。在经历了很多事情之后,我的所有规则终于奏效了,我很高兴他们这样做了。好吧,几乎所有这些都有效。最后一个没有。
.htaccess:
RewriteEngine On
RewriteRule ^blog\.php$ /category/blog/ [R=301,L]
RewriteRule ^category/blog/?$ blog.php [L]
RewriteRule ^category/blog/page/?$ /category/blog/ [R=301,L]
RewriteRule ^category/blog/page/([0-9]*)/?$ /category/blog/?pagenum=$1 [L]
RewriteRule ^([0-9]{4})/?$ /category/blog/?year=$1 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/?$ /category/blog/?year=$1&month=$2 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/?$ /category/blog/?year=$1&month=$2&day=$3 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(^/]+)/?$ /category/blog/?url=http://kn3rdmeister.com/$1/$2/$3/$4/ [L]
最后一条规则应该重定向到每篇博文的“永久链接”页面。由于每个URL都是唯一的,我使用post URL作为唯一标识符。本质上,它应该通过“blog.php”传递“url”查询字符串。 PHP脚本接管,看到设置了“url”查询字符串,然后在其行中加载唯一具有该确切URL的帖子。
该脚本有效,但重定向不起作用。直接进入
http://kn3rdmeister.com/blog.php?url=http://kn3rdmeister.com/2012/07/04/amsterdam-ave/
将加载正确的内容。但是,转到
http://kn3rdmeister.com/2012/07/04/amsterdam-ave/
不
答案 0 :(得分:0)
尝试添加QSA (Query String Append)。此外,颠倒规则,以便“更深层次”的链接在顶部。
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(^/]+)/?$ /category/blog/?url=http://kn3rdmeister.com/$1/$2/$3/$4/ [QSA,L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/?$ /category/blog/?year=$1&month=$2&day=$3 [QSA,L]
RewriteRule ^([0-9]{4})/([0-9]{2})/?$ /category/blog/?year=$1&month=$2 [QSA,L]
RewriteRule ^([0-9]{4})/?$ /category/blog/?year=$1 [QSA,L]
但,您不能在其他规则中使用重写链接。因此,只要您category/blog/
将其替换为blog.php
。
答案 1 :(得分:0)
虽然webarto评论是好建议,但你的问题是缺失[:
^([0-9]{4})/([0-9]{2})/([0-9]{2})/([^/]+)/?$
不
^([0-9]{4})/([0-9]{2})/([0-9]{2})/(^/]+)/?$