精选文章

Android下使用TCPDUMP抓包Wireshark分析数据 如果想分析Android下某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump生成Wireshark识别的pcap文件,然后将pcap文件下载到电脑上,用电脑上的Wireshark加载pcap文件,通过Wireshark分析tcpdump抓取的数据。...

继续阅读

Mac下部署Android开发环境附加NDK 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间、查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到Android这种GFW阻隔了开发资源下载链接的环境部署,又尤其浪费时间。所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程以后可以轻轻松松在Mac系统下将Android环境部署好。...

继续阅读

稍顯嚴肅的台中 坦白說,留在腦海中的台中影像並不多,來台灣之前在Booking上只訂到了台中的一家青旅,第一次住青旅有些不習慣,幹什麼都放不開。 同屋的一個男生是台灣人,不過一年中四分之三的時間在上海跟北京,這麼說來跟我還是比較有共同話題的。得之我準備花15天的時間環島,覺得太倉促了,他們大學時期花一個半月的時間也不見得能將台灣島給逛完。我只能無奈地表示,兩岸允許的簽證時間有限,自己的空閒時間更有限,只能用打卡式的旅行了,我深知正真地旅行應該慢下來,融入當地的環境,感受他們的風土人情,但第一次只能這樣作罷,以後換成民進黨上台,形勢會變成怎樣還不得而知,能否再過來還是個未知數。而我一向信奉的人生格言是秉燭夜遊,活在當下,所以,理解自己吧。...

继续阅读

為之留戀的新竹 來新竹之前本沒有對她有過高的期待,慢慢對她加分要從桃園火車站出發前往新竹開始。 在桃園火車站的候車月台上,有醒目的旅遊資料發放處,這上面的擺放的全是新竹的旅遊宣傳資料,關鍵的是資料做得非常簡潔易懂,而接下來一天的新竹之行就全部是依據這份寶典的指引來完成的。...

继续阅读

從桃園開始台灣之行 初到台灣恰逢華夏銀行系統升級,特意準備的華夏銀聯卡在桃園機場沒能派上用場,只好用建行在機場5000塊,算下來是很不划算的,但是沒辦法,誰叫我出機場就得花錢呢。 從機場打車到桃園的酒店,花了將近六百塊新台幣,到酒店時五點多,天已經漸亮了,洗漱完等到七點吃過早餐就開始補覺囉,一覺醒來已是中午,帶著換下來的衣服外出找自助洗衣店,順便覓食。...

继续阅读

  • Prev
  • Next

利用web.config实现Windows空间的301重定向

2

文章分类 : Windows, Wordpress, 应用与编程, 浏览器, 网络

真的后悔当初选了个Windows主机安放CppLive编程在线,各种麻烦啊,从当初不能用Wordpress自带的mail函数发邮件到最近超麻烦的301重定向设置,浪费了我不少时间去折腾。不过在折腾的同时自己也学了很多新知识,这样想想也还就没那么沮丧了。早几天把Wordpress固定链接格式简化以后,百度的拔毛让我心慌慌,为了亡羊补牢,以至于我今天花了几乎一天时间去尝试利用web.config实现Windows空间的301重定向。

昨天那篇日志“巧用404页面重定向WordPress固定链接”虽然可以通过访问旧的固定链接利用JS跳转到新的固定链接页面,但因为是在已经产生了404错误以后借助404.php页面实现的跳转,旧的固定链接的http头信息里依然保存着404错误,网络爬虫毕竟不是浏览器,不会跟随着JS跳转,所以搜索引擎的网络爬虫沿着老的固定链接抓取页面时,发现404错误,也就是告诉它页面被删除或者找不到了,这不等于欺骗我们小爬虫的感情麽?所以现在的后果是,百度小爬虫伤心了,基本上不过来抓页面了。

但是如果做了真正意义上的301重定向,网页服务器会在http头中自动加上形于“HTTP/1.1 301 Moved Permanently”的语句告诉搜索引擎或者浏览器,该网址永久转移到新的地址上去了,新的网址用形于“Location:新地址”的语句表示。搜索引擎或浏览器收到这条301重定向信息便会自动抓取或访问新新地址。这种实现方式相对于昨天那篇文章中提到的方式,兼容性更好,几乎是个浏览器就支持,最重要的对搜索引擎很友好,便于搜索引擎更新链接地址,不至于因为内容重复而降权。

看来Windows这只螃蟹我是不吃不行了,查了一天的资料,问题还是没解决彻底,有部分页面暂时只能实现302重定向(即临时重定向,而301是永久重定向)了。只怨小的不才,完全实现301重定向还得请教高人,今天先小结一下,免得过两天又忘了。

从基本的开始弄,先把cpplive.com重定向到www.cpplive.com,到底要不要www,众说纷纭,各有各的道理,由于本人的域名C开头,要是不加www,看上去极不美观,所以决定使用www.cpplive.com作首页。在网站空目录下新建web.config文件,这是IIS7默认会调用的配置文件,贴入以下代码。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
	<rule name="Canonical Host Name" stopProcessing="true">
	   <match url="(.*)" />
	      <conditions>
		<add input="{HTTP_HOST}" pattern="^cpplive\.com$" />
	      </conditions>
	   <action type="Redirect" url="https://www.cpplive.com/{R:1}" redirectType="Permanent" />
	</rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

如果您的网站空间跟目录下已经有了web.config文件,并且已经有了以上类似结构,只需要将上面一段代码中<rule></rule>标签以及它们之间的内容拷贝到<rules></rules>之间便可。别忘了把cpplive\.com跟www.cpplive.com替换为您的对应域名。

现在只剩下固定链接需要重定向了,而这才是最难实现了,因为涉及到URL内容识别以及分割,用web.config文件实现我到目前为止还未弄成功过,如果哪位高人会的话,麻烦分享一下哈。就拿我的新旧固定链接来说吧,旧的格式形如“https://www.cpplive.com/html/883_wordpress-post-copyright.html”,新的格式形如“https://www.cpplive.com/html/883.html”,我有考虑过用正则表达式在web.config文件中实现301重定向如下。

<rule name="post url changed by taoz" stopProcessing="true">
    <match url="^(.*)\/html\/(\d+)_(.*)\.html" />
    <action type="Redirect" url="https://www.cpplive.com" redirectType="Permanent" />
</rule>

但不知是因为IIS7的问题还是空间提供商限制了,始终没有成功。无赖之下我只好选择在PHP中实现301重定向,但由于PHP修改好以后的带有301标志的http头最终还得经过WEB服务器转发,这样一转以后,301永久重定向就变成302临时重定向了,鄙人表示真的很无奈。在网站跟目录下找到index.php,在“<?”后面贴上如下代码。

$URIRedirect=$_SERVER['REQUEST_URI'];
if (strpos($URIRedirect, "_") !== false)
{
	$pageURL = 'http://';
    
        // 只取 _ 前面的内容
	$this_page = reset(explode("_", $URIRedirect));
	$pageURL .= $_SERVER["SERVER_NAME"] . $this_page . '.html';
	
	header('HTTP/1.1 301 Moved Permanently');
	header('Location:'.$pageURL);
	exit();
}

即以下划线“_”作为分割标志,取分割后的前半截网址接上“.html”就把旧的固定链接地址转化成了新的固定链接地址。然后通过header函数设置301永久重定向,小遗憾是IIS7最终还是将这一改变降低成了302临时重定向。

除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。

本文地址:https://www.cpplive.com/html/951.html

评论 (2)

  • www.liketm.com says:

    请教一下,怎么将一篇文章跳转到另一个目录下。例如
    原地址 x.com/a.htm
    能否跳转到
    新地址 x.com/news/a.htm
    求解答。

  • 这里因为你的留言而存在!!!

    You must be logged in to post a comment.