我的移动网站(受wordpress启发的小型自定义CMS)有一个主页,博客页面,新闻页面,关于页面和联系页面./blog
./news
./about
和{ {1}}是实际文件夹。 主页,博客和新闻是分页的。 关于和联系人是单页,没有分页。
我需要htaccess重写规则来执行以下(A)和(B)。我只用(A)取得了进展,而htaccess文件位于站点根目录中。
(A)
./contact
重写为m.website.com/index.php?page=1
m.website.com
重写为m.website.com/index.php?page=2
等 m.website.com/page/2
重写为m.website.com/blog/index.php?page=1
m.website.com/blog
重写为m.website.com/blog/index.php?page=2
等 m.website.com/blog/page/2
重写为m.website.com/news/index.php?page=1
m.website.com/news
重写为m.website.com/news/index.php?page=2
等 问题:
以下是我正在使用的内容,但我现在只为主页工作了。我不知道如何将规则结合起来包括 blog 和 news 页面。此外,它复制了我的链接,因为m.website.com/news/page/2
和m.website.com
都在使用中。我需要在任何地方摆脱m.website.com/page/1
。分页应该从第2页开始。我试图使用RedirectMatch摆脱它,但它没有用,所以我评论了它。
/page/1
(B)
RewriteEngine On
RewriteBase /
RewriteRule ^page/(.*) index.php?page=$1 [NC]
#RedirectMatch 301 ^/page/1/$ http://m.website.com/
http://m.website.com/2012/03/the-post-title
查询permalink.php以获取postID,然后打开/2012/03/the-post-title
,但地址栏中的地址将为{ {1}}这显示了完整的文章,无论是主页,博客页面还是新闻页面。问题:我一直在寻找,我不确定如何去做(B),但我知道这是可能的。最后,A和B的所有规则都将位于站点根目录中的相同htaccess文件中。
由于
答案 0 :(得分:2)
这应该可以帮到你。看起来你已经做了大部分工作,所以没有muc可做。
RewriteEngine On
RewriteBase /
# you do not need a rewrite for the root as you should have index.php
# as your default document and page 1 as your default page
RewriteRule ^page/1/?$ / [NC,L,R=301]
RewriteRule ^page/(\d+)/?$ index.php?page=$1 [NC,L]
# you do not need a rewrite for blog as you should have index.php as your
# default document and page 1 as your default page
# you do not need a rewrite for news as you should have index.php as your
# default document and page 1 as your default page
RewriteRule ^(blog|news)/page/1/?$ $1 [NC,L,R=301]
RewriteRule ^(blog|news)/page/(\d+)/?$ $1/index.php?page=$2 [NC,L]
######################################################################
################## ADD YOUR PERMALINK.PHP CODE HERE ##################
######################################################################
<强>更新强>
要有效地将/ 2012/03 /后标题转换为postID,您需要能够让您的数据库为您执行此操作,因为它是唯一知道答案的内容。所以你可以使用RewriteMap
http://httpd.apache.org/docs/2.3/rewrite/rewritemap.html#dbd我自己从未这样做过,我会反对它。不是因为我知道它有问题我只是对它感觉不好。
替代方案和我支持的方法就是做这样的事情: -
RewriteRule ^(\d{4})/(\d{2})/([^/]+))/?$ article.php?postIdentifier=$1/$2/$3 [L]
然后在article.php中点击数据库并使用postIdentifier中的信息来获取正确的文章。
有意义吗?