• 联系
  • 这个博客用来记载这个博客网站的成长,同时提供对b2e中文版本的支持

 
十二月 2008
周一 周二 周三 周四 周五 周六 周日
 << <   > >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

搜索

powered by b2evolution free blog software

« 在帖子里发布图片的几种办法b2evolution 汉化文件更新通知 »

为博主提供个性化网址的安排及改进(续)

为博主提供个性化网址的安排及改进(续)

《为博主提供个性化网址的安排及改进》的帖子发表后,网友hong指出,有些做法可以通过设置.htaccess文件,利用Linux服务器上的rewrite功能来实现。

我原先没有考虑用.htaccess文件设置的办法,主要是因为这个办法只能用在Linux服务器上。后来了解到IIS服务器上,也可以通过安装Helicon的ISAPI_rewrite,然后在httpd.ini(或者httpd.conf)上添加类似的设置。目前我没有IIS服务器的试验平台,可是从原理上说,httpd.ini(或者httpd.conf)与.htaccess的设置要求应该是相同的或者相似的。在这里我把.htaccess的用法写出来。

在Linux服务器上,.htaccess文件其实就是httpd.conf的一个部分,只不过管理权限不同。一般地说,httpd.conf的设置对整个服务器生效,所以这个文件由系统管理员管辖。而.htaccess文件只对虚拟服务器或者具体的子目录生效,因此可以由不同档次的服务器管理员负责。所以在由ISP服务商提供的Linux平台上,.htaccess文件的用途很大。我这里只涉及到通过改写使博客网址个性化的话题。

(继续)

首先把我们要实现的目标说清楚。我们的目的是向博主提供一个比较简便明了的网址。比如说,从上文了解到,博主张先生的博客的序列号是5,博主标签是john,那么他的博客的安装网址是

http://domain_name/blogs/blog5.php

通过上篇帖子介绍的方法,我们可以把这个网址个性化成

http://domain_name/blogs/john.php

现在,通过使用改写,我们希望把这个网址进一步简约成

http://domain_name/john/

当然,这里我们还必须确定服务器上没有一个真实的名为/john的子目录的存在。下面是.htaccess文件的内容:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/john/?$
RewriteRule ^john/?$ /blogs/blog5.php

RewriteCond %{REQUEST_URI} ^/john/(.+)$
RewriteRule ^john/(.+)$ /blogs/blog5.php?$1

这个.htaccess文件必须存放在服务器的根目录位置上(docroot)。如有必要,可以把blog5.php改成其他的现有的文件名。

先试试一试看这个文件能不能工作。以管理员身份进入博客管理,在网址一项选择“绝对网址”,并且输入http://domain_name/john/这个参数。保存变化,然后以http://domain_name/john/打开博客。

现在回头看一看.htaccess文件的内容。第一句是启动RewriteEngine功能。接下来的两对语句,共同为把“/blogs/blog5.php”改写成“/john/”效力。每一对中的第一句是条件语句,第二句是执行语句。第一对用在网址不带参数的情况,第二对用在有带有不同参数的情况。两者缺一不可。

由于缺乏对博客序号与博客标签之间的对应关系,目前这个.htaccess文件的写法还比较呆板,每增加一个博客就要增添四行语句,管理起来比较麻烦,而且这样添加下去,也会影响到系统的服务效率。解决的办法在于——首先为每个博主建立一个与博主标签相呼应的php文件,然后对.htaccess文件稍加改进就可以了。

假设我们的下一个博主李小姐的博客标签是mary,而且我们已经在/blogs/下建立的相应的john.php和mary.php。现在先把.htaccess文件修改如下,

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/(john|mary)/?$
RewriteRule ^(john|mary)/?$ /blogs/$1.php

RewriteCond %{REQUEST_URI} ^/(john|mary)/(.+)$
RewriteRule ^(john|mary)/(.+)$ /blogs/$1.php?$2

最后到管理界面上,把李小姐的博客网址设置为http://domain_name/mary/这个“绝对网址”。这样,就可以为李小姐提供一个相对简约的个性化网址。

以后凡是有新的博主加入,都可以先建立与博主标签对应的.php文件,然后把这个博主标签用“|[博主标签]”格式,加入到.htaccess的相应语句里。

固定链接 08-05-17 13:23:07 , by blogsmith 邮件地址 , 点击数:721, b2evolution, 4条评论 »

4条评论

评论 来自 hong [访问者] · http://360cha.cn
第一:没错就是这个,但是能否将所有的都写出来比如还有 分类、标签、按日期。。也就是博客设置里的 网址 那一部分的内容

第二:中文的标签我这边怎么使用不了,点中文标签进不去

第三:用管理回复帖子会出现一个错误提示大概的内容是:


无效请求!
您请求的参数是无效的。

如果您在使用网站的某个连接时出现这个错误,请把这个连接报告给管理员。

返回主页

关于这个错误的进一步的信息:
«pb»参数中带有无效数值!
08-05-19 @ 21:17
评论 来自 hong [访问者] · http://360cha.cn
第三点补充:
虽然提示错误但是评论照样发送成功
08-05-19 @ 21:17
评论 来自 hong [访问者] · http://360cha.cn
第3点补充:
使用参数则正常,使用路径则不行。
08-05-19 @ 21:21
评论 来自 blogsmith [成员] 邮件地址
hong, 我的改写语句已经包括了所有的状态。不要再另外添加了。

关于中文标签和回帖问题,看来都和你的服务器的请求处理有关——客户端生成的请求在送回到b2e之前,可能已经被过滤改写了。最好能有一个干净的测试环境,先把所有的和网址处理的内容去掉,否则很难诊断。
08-05-19 @ 23:11

发表评论


您的邮箱地址不会公布在这个网站上。

您的网址将被显示
(换行变成了 <br />)
(名字、邮箱地址、和网址)
(允许用户通过信息表与您联系(您的邮箱地址不会被显示))