discuz修改版块列表页,为帖子内容页生成唯一地址

帖子页的URL形式有很多,我们可以通过修改viewthread.php和archive给内容页上canonical URL,都指向静态URL形式来集中权重。

但是,这个伪静态地址也不是唯一的:thread-{tid}-{page}-(forumpage).html,由内容页URL组成可见最后一段数字是代表帖子在这个版块列表的第几页,当新帖子不断增加,老帖会被挤到第二页,第三页…这样它的URL就会不断地变化。

解决方法:

方法:修改forumdisplay.php

将$extra = rawurlencode(“page=$page$forumdisplayadd”);

改为$extra = rawurlencode(“page=1$forumdisplayadd”);

这样,最后一段固定为1,但有个缺点,用户从这个帖子只能返回列表页的第一页了。

discuz seo悄悄地在改变:上面的问题还是以观察收录结果是发现的,不过discuz7.0的global.func.php文件,发现对帖子页进行静态化地址替换的函数有所变化

 
function rewrite_thread($tid, $page = 0, $prevpage = 0, $extra = '') {

return '<a href="thread-'.$tid.'-'.($page ? $page : 1).'-'

.($prevpage && !IS_ROBOT ? $prevpage : 1).'.html"'.stripslashes($extra).'>'; }

也就是说,现在discuz会针对搜索引擎,把最后一段固定生成为1来解决这个问题。虽然是针对用户和搜索引擎分别处理,但内容都是一样的,并没有欺骗,应该还是没问题的。

另外,在伪静态替换中发现对robots进行了特殊处理,说明动态地址没有处理这个问题。

Tags: ,

星期五, 三月 12th, 2010 Web 没有评论

discuz给redirect.php做301跳转

类似redirect.php?tid=7&goto=lastpost这种形式URL的页面的子内容和thread-1-1-1.html一样的,但URL形式不一样,SE会当成重复内容。

这种URL形式会出现在主页、版块列表页的最后发表或最后回复位置,discuz7以前版本的上一主题、下一主题等也是此种形式的URL,现在虽然没有,但在代码中还能找到那些参数。

为什么不禁止这种URL形式的索引?

1.主要是不能控制别人链接到这种形式,如果禁止索引这种形式的URL就浪费了链接,所以要做301跳转,把链接和权重转移到标准的静态形式。

2.链接形式出现在首页,不禁止或许可以加快录

给redirct.php做301跳转

有的情况下程序要查找才能得到要显示的tid,所以只能修改程序,用php代码实现301跳转。

打开 redirect.php 文件,将 require_once DISCUZ_ROOT.’./viewthread.php’; 替换为

 
header("HTTP/1.1 301 Moved Permanently");
header( "Location: thread-{$tid}-1-1.html" );
exit();

文件中共有四处,都修改完就可以访问论坛,检查下效果了

Tags: , ,

星期五, 三月 12th, 2010 Web 没有评论

discuz加canonical URL标签,规范化网址

Discuz的网址规范化有很多问题,即同样的内容,有着好多不同的URL。下面使用canonical URL TAG新标准来处理这些问题。

一,给viewthread.php页加canonical URL

可以发现这种动态的链接形式最多了,有不同的参数但内容一样,当然现在的SE能够处理这些问题,但但很难判断首选显示URL方式,或者当他们都有返回链接时,不能集中权重。为了解决类似的重复网页问题,googel,yahoo,live,ask.com都宣布支持一个新的标签属性,以把链接和权重都集中到一个首先的URL上。

1.给viewthread.php加canonical URL标签,指定帖子的静态地址为首选版本。

修改viewthread.php文件,在$page = max($page, 1);上面(程序调用包含文件结束),加一行$extrahead .='<link rel=”canonical” href=”thread-‘ .$tid. ‘-1-1.html” />’;

2.给打印页加canonical tag

虽然打印页viewthread.php?action=printable…..也是调过这个程序生成数据,但用了不同的模板,要把变量$extrahead 加进去,修改tmplates\default\viewthread_printable.htm

在<head>部分<title>的下面加一行: $extrahead

二.给forumdisplay.php加canonical tag

在include template(‘forumdisplay’);上加一行:

$extrahead .='<link rel=”canonical” href=”forum-‘ .$fid. ‘-‘ .$page. ‘.html” />’;

三.为archiver页加link canonical标签

1.修改archiver/index.php:在global $boardurl, $_DCACHE, $charset, $navtitle, $headerbanner, $headernav;行下加一行:global $extrahead;

在<meta http-equiv=”Content-Type” content=”text/html; charset={$charset}” />

行下加一行:$extrahead

2.修改archiver\include\thread.inc.php:此文件中有两个showheader();,在第二个的上面加一行:$extrahead .='<link rel=”canonical” href=”thread-‘ .$tid. ‘-1-1.html” />’;

四.将archiver内容页最下的“本看完整版本”链接改为静态形式

修改archiver/include/thread.inc.php,将 “viewthread.php?tid=$tid”替换为”thread-{$tid}-1-1.html”

如果您是以动态URL形式为首先版本,上述相应位置应替换为如下语句:

$extrahead .='<link rel=”canonical” href=”viewthread.php?tid=’ .$tid. ‘” />’;

Tags: , ,

星期五, 三月 12th, 2010 Web 没有评论

discuz禁止某个版帖子的收录

各种原因,需要禁止SE对discuz某个版面帖子的收录(如水版、或为了更好的SEO等)。当然如果设置了权限,不允许游浏览此版面,那么就肯定不能收录了。

1.使用robots.txt文件,禁止版块列表的收录

 
Disallow: /forum-1-

#数字即为要禁止版块的ID。

#注意数字最后的 – 不要省略,否则连ID为11,12等1开头的版都禁了

2.加meta robots标签,禁止收录某个版块帖子

修改viewthread.php文件,在$oldtopics = isset($_DCOOKIE[‘oldtopics’]) ? $_DCOOKIE[‘oldtopics’] : ‘D’; 上面加:

 
if( $thread['fid']==1 ){
$seohead .= '<meta name="robots" content="noindex,nofollow" />';
}

判断一下帖子是属于哪个版($thread[‘fid’])的,给它加上meta robots禁止。

第一点虽然禁止版块收录了,但有可能从动态形式或其它地方访问到帖子链接,所以还要用第二点给帖子页加上meta。这两点中的版块ID和要您禁止的版块对应,如果有多个版块,第一点中添加行就行了,第二点要修改断语句中中的逻辑表达式。

Tags: ,

星期五, 三月 12th, 2010 Web 没有评论

discuz论坛禁止无效页面的收录

discuz会产生哪些无效的页面,有什么问题

1.删除了的帖子、版块,当访问时返回帖子不存在的提示信息页。

2.设置了一定权限才能浏览的帖子、版块,很多情况会泄露链接,得到没权限的提示

3.其它各种情况下的提示信息页面。这些都是给用户看的,没有实质内容,都禁止收录。

其实最大的问题还是副本内容的问题,因这些不同的URL,返回的却是相同的内容。对SE不友好。其实对于删除了内容,应该返回404,但为了简单,都使用加meta robots标签,禁止ES收录的方法来解决。

修改提示信息页面,解决重复内容问题

方法一

1.建立/templates/defualt/header_norobot.htm文件

完全拷贝header.htm的内容,在<title>下再加一行:

<meta name=”robots” content=”noindex,nofollow” />

2.修改/templates/default/showmessage.htm文件

将{subtemplate header}替换为{subtemplate header_norobot}

3.修改/templates/default/nopermission.htm文件

将{subtemplate header}替换为{subtemplate header_norobot}

如此修改之后,SE就不会收录无权访问的URL,对于已删除的帖子,因为禁止收录了,过一段时间也会从索引中删除。这样,给SE的都是一些有内容的网页,对于提高权重会有好处。

方法二

修改global.func.php文件中的showmessage函数。

function showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0) {
extract($GLOBALS, EXTR_SKIP);
global $hookscriptmessage, $extrahead, $discuz_uid, $discuz_action, $debuginfo, $seccode, $seccodestatus, $fid, $tid, $charset, $show_message, $inajax, $_DCACHE, $advlist;
define('CACHE_FORBIDDEN', TRUE);
$hookscriptmessage = $show_message = $message;$messagehandle = 0;

在第四行 define(‘CACHE_FORBIDDEN’, TRUE); 后面加上:

$extrahead .='';

即是

function showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0) {
extract($GLOBALS, EXTR_SKIP);
global $hookscriptmessage, $extrahead, $discuz_uid, $discuz_action, $debuginfo, $seccode, $seccodestatus, $fid, $tid, $charset, $show_message, $inajax, $_DCACHE, $advlist;
define('CACHE_FORBIDDEN', TRUE);
$extrahead .='<meta name="robots" content="noindex,nofollow" />';
$hookscriptmessage = $show_message = $message;$messagehandle = 0;

Tags: , ,

星期五, 三月 12th, 2010 Web 没有评论

discuz论坛的robots.txt文件设置

discuz论坛的robots.txt文件设置

User-agent: *
Allow: /redirect.php
Allow: /viewthread.php
Allow: /forumdisplay.php
Disallow: /?
Disallow: /*.php

搜索引擎对robots.txt的支持情况

1. 对于allow 及 * $ 通佩符都支持,定义是一样的。
2.对于同一个User-agent 段内的 allow 和 disallow,匹配规则是不一样的。
google,baidu,sogou对于allow的优先级高,只要有allow允许,不管在段内什么位置,不管之前disallow设置如何,蜘蛛就会索引;
而live serch, yahoo对于allow和disallow的定义是平级的,按照从下到下的顺序只要匹配成功就退出。youdao未知

from:http://seo.banmutian.org/thread-2-1-1.html

Tags: , ,

星期五, 三月 12th, 2010 Web 没有评论

.htaccess常用设置

.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的能。.htaccess 配置文件坚持了Unix的一个文化——使用一个ASCII 的纯文本文件来配置你的网站的访问策略。

1. 创建自定义的出错页面

对于Linux Apache来说这是一项极其简单的事情。使用下面的.htaccess语法你可以轻松的完成这一功能。(把.htaccess放在你的网站根目录下)

 
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

2. 设置网站的时区

 
SetEnv TZ America/Houston

3. 阻止IP列表

有些时候,你需要以IP地址的方式阻止一些访问。无论是对于一个IP地址还是一个网段,这都是一件非常简单的事情,如下所示:

 
allow from all
deny from 145.186.14.122
deny from 210.10.56 #封禁210.10.56.0~210.10.56.255的所有IP地址

Apache对于被拒绝的IP会返回403错误。

4. 把一些老的链接转到新的链接上——搜索引擎优化SEO

 
Redirect 301 /iindex.php  http://www.njava.com

5. 为服务器管理员设置电子邮件。

 
ServerSignature EMail
SetEnv SERVER_ADMINdefault@domain.com

6. 使用.htaccess 访止盗链。

如果你网站上的一个图片被别的N多的网站引用了,那么,这很有可能会导致你服务器的性能下降,使用下面的代码可以保护某些热门的链接不被过多的引用。

 
Options +FollowSymlinks
# Protect Hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/[nc]
RewriteRule .*.(gif|jpg|png)$http://www.someonename.com/Article/UploadFiles/200908/20090824122550889.png[nc]

7. 阻止 User Agent 的所有请求

 
## .htaccess Code :: BEGIN
## Block Bad Bots by user-Agent
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny
Allow from all
Deny from env=bad_bot

## .htaccess Code :: END

8. 把某些特殊的IP地址的请求重定向到别的站点

 
ErrorDocument 403http://www.youdomain.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123

9. 直接找开文件而不是下载

通常,我们打开网上文件的时候总是会出现一个对话框问我们是下载还是直接打开,使用下面的设置就不会出现这个问题了,直接打开。

 
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

10. 修改文件类型

下面的示例可以让任何的文件都成为PHP那么被服务器解释。比如:myphp, cgi,phtml等。

 
ForceType application/x-httpd-php
SetHandler application/x-httpd-php

11. 阻止存取.htaccess 文件

 
# secure htaccess file
order allow,deny
deny from all

12. 保护服务器上的文件被存取

 
# prevent access of a certain fileorder allow,deny
deny from all

13. 阻止目录浏览

 
# disable directory brow
sing
Options All -Indexes

14. 设置默认主页

 
# serve alternate default index page
DirectoryIndex about.html

15. 口令认证

你可以创建一个文件用于认证。下面是一个示例:

 
# to protect a file
AuthType Basic
AuthName “Prompt”
AuthUserFile /home/path/.htpasswd
Require valid-user

# password-protect a directory resides
AuthType basic
AuthName “This directory is protected”
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user

16. 把老的域名转像新的域名

 
# redirect from old domain to new domain
RewriteEngine On
RewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]

Tags: , ,

星期四, 三月 11th, 2010 服务器 没有评论

各大搜索引擎网站登录入口

Google:登录您的网站
http://www.google.com/intl/zh-CN/add_url.html

百度搜索帮助中心-网站登录
http://www.baidu.com/search/url_submit.html

雅虎网址大全_网站登录
http://site.yahoo.com.cn/feedback.html

蜜蜂导航搜索-网站提交
http://www.mifeng.cc/login.asp

如何向雅虎提交我的网
http://search.help.cn.yahoo.com/h4_4.html

alexa资料提交
http://www.alexa.com/site/help/webmasters

MSN提交URL
http://search.msn.com.cn/docs/submit.aspx

SOHU(搜狐)网站登记-搜狗免费网站登录
http://db.sohu.com/regurl/regform.asp

TOM搜索 >> 网站登录
http://search.tom.com/tools/weblog/log.php

Google网页目录
http://directory.google.com/Top/World/Chinese_Simplified/

蜜蜂导航
http://www.mifeng.cc

hao123网址之家
http://post.baidu.com/f?kw=hao123

爱问搜索
http://iask.com/guest/add_url.php

中国搜索
http://ads.zhongsou.com/register/page.jsp

天网搜索
http://home.tianwang.com/denglu.htm

排名
http://top.chinaz.com

Tags: , ,

星期四, 三月 11th, 2010 Web 没有评论

Syntax Highlighter WordPress Plugin

wordpress高亮插件,使用方法:在HTML编辑模式下,用
<pre class=”brush:[code-alias]”> 你的代码 </pre> 即可。
很显然,Code-alias是所使用编程语言的名称,例如对于php有:
<pre class=”brush:[php]”>  php 代码 </pre>

http://www.lastengine.com/syntax-highlighter-wordpress-plugin/

Overview

This is a wordpress syntax highlighting plugin. It is simple and probably one of the best syntax highlighters in the market. This plugin integrates Alex Gorbatchev’s Syntax Highlighter Tool Full Support for :

  • Bash/shell
  • C#
  • C++
  • CSS
  • Delphi
  • Diff
  • Groovy
  • JavaScript
  • Java
  • Perl
  • PHP
  • Plain Text
  • Python
  • Ruby
  • Scala
  • SQL
  • Visual Basic
  • XML

Tags: , ,

星期四, 三月 11th, 2010 Web 没有评论

apache DDos防范模块 mod_evasive

什么是mod_evasive?

mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an HTTP DoS or DDoS attack or brute force attack. It is also designed to be a detection and network management tool, and can be easily configured to talk to ipchains, firewalls, routers, and etcetera. mod_evasive presently reports abuses via email and syslog facilities.

Detection is performed by creating an internal dynamic hash table of IP Addresses and URIs, and denying any single IP address from any of the following:

  • Requesting the same page more than a few times per second
  • Making more than 50 concurrent requests on the same child per second
  • Making any requests while temporarily blacklisted (on a blocking list)

This method has worked well in both single-server script attacks as well as distributed attacks, but just like other evasive tools, is only as useful to the point of bandwidth and processor consumption (e.g. the amount of bandwidth and processor required to receive/process/respond to invalid requests), which is why it’s a good idea to integrate this with your firewalls and routers for maximum protection.

This module instantiates for each listener individually, and therefore has a built-in cleanup mechanism and scaling capabilities. Because of this per-child design, legitimate requests are never compromised (even from proxies and NAT addresses) but only scripted attacks. Even a user repeatedly clicking on ‘reload’ should not be affected unless they do it maliciously. mod_evasive is fully tweakable through the Apache configuration file, easy to incorporate into your web server, and easy to use.

官方网站:http://www.nuclearelephant.com/projects/mod_evasive/

原理

mod_evasive是apache防范DDOS攻击的模块,其原理大致如下:
有新访问到达时:

  • 查看黑名单中是否有该客户IP。
  • 将IP和请求URL一起HASH;查找HASH表看过去1秒是否连续请求同一页。
  • 将IP和请求URL一起HASH;查找HASH表看过去1秒是否请求超过50个连接。

满足任意一条就返回403并阻止该IP一定时间,该时间由DOSSiteInterval决定。

1、安装mod_evasive

bear@bear-laptop:~$ sudo apt-get install libapache2-mod-e
libapache2-mod-encoding  libapache2-mod-evasive
bear@bear-laptop:~$ sudo apt-get install libapache2-mod-evasive
[sudo] password for bear:
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
下列软件包是自动安装的并且现在不再被使用了:
linux-headers-2.6.31-14 linux-headers-2.6.31-14-generic
使用’apt-get autoremove’来删除它们
下列【新】软件包将被安装:
libapache2-mod-evasive
共升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件未被升级。
需要下载 15.9kB 的软件包。
解压缩后会消耗掉 115kB 的额外空间。
获取:1 http://ubuntu.cn99.com karmic/universe libapache2-mod-evasive 1.10.1-1 [15.9kB]
下载 15.9kB,耗时 0 秒 (121kB/s)
选中了曾被取消选择的软件包 libapache2-mod-evasive。
(正在读取数据库 … 系统当前总共安装有 151313 个文件和目录。)
正在解压缩 libapache2-mod-evasive (从 …/libapache2-mod-evasive_1.10.1-1_amd64.deb) …
正在设置 libapache2-mod-evasive (1.10.1-1) …
* Reloading web server config apache2                                          apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

bear@bear-laptop:~$

2、配置mod_evasive

sudo vi /etc/apache/conf.d/mod_evasive

#添加以下:

<IfModule mod_evasive20.c>

DOSHashTableSize 3097:定义哈希表大小。

DOSSiteCount 50:允许客户机的最大并发连接。

DOSPageCount 2:允许客户机访问同一页的间隔。

DOSPageInterval 1:网页访问计数器间隔。

DOSSiteInterval 1:全站访问计数器间隔。

DOSSiteInterval 60:加入黑名单后拒绝访问时间。

DOSEmailNotify crdd1130@gmail.com:有IP加入黑名单后通知管理员。

DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP":IP加入黑名单后执行的系统命令。

DOSLogDir "/tmp":锁定机制临时目录。

DOSWhiteList 127.0.0.1:防范白名单,不阻止白名单IP。

</IfModule>


Tags: ,

星期四, 三月 11th, 2010 服务器 没有评论
Pages: Prev 1 2 3 ... 5 6 7 8 9 10 11 12 13 14 15 Next
1LMooBmUE153Wnd3zDryWvDyXxQudbFxDr