如何将旧的丑陋网址重写为新的美化工作网址?

时间:2011-03-05 02:57:51

标签: apache url-rewriting apache2

这个问题在过去的几个月里一直在困扰着我。首先是好消息:在一个大众社区的帮助下,我能够将我丑陋的网址重写为好的网址:例如: website.com/page.ast?ln=nl进入website.com/nl/page

但是

Google在搜索中显示丑陋的网址:

website.com/nl/page.ast?ln=fa

我的网站页面代码确实具有规范设置:

<link rel="canonical" href="http://website.com/nl/page">
<meta name="original-source" content="http://website.com/nl/page"/>

然而,结果显然仍然被错误的,丑陋的网址索引!
Q1。为什么谷歌会忽略规范更美丽的链接?


也许最好以机械方式执行此操作:将website.com/nl/webpage.ext?ln=yy重定向到website.com/nl/webpage,基本上删除不执行任何操作的不可靠部分.XXX?ln=YYYY(其中XXX是2或3个字符)扩展名和YYY是一种语言(可以是nlbefr,还有zh-CN等等。

EXAMPLE OF UGLY OLD FILES   THEIR NICE BEAUTIFIED URLS
/en/somepage.ast?ln=fr          /en/somepage
/fr/home.php?ln=zh-CN           /fr/home
/xx/zzzzzz.ext?ln=yyyy          /xx/zzzzzzz
/xx/zzzzzz?ln=yyyy              /xx/zzzzzzz
/xx/zzzzzz.ext                  /xx/zzzzzzz

Q2。如何一次性将所有难看的文件重写为好的URL? Sofar,初步设计

RewriteRule   /XX/ZZZZ(.*anything after and including the dot)  /XX/ZZZZ [R=301]

那么,你推荐什么?我认为建议是可能的答案。非常感谢提前!

1 个答案:

答案 0 :(得分:1)

  1. Canonical url说,代表此内容的主网址不同。它对谷歌来说仍然是一个不同的URL,它会对规范网址给予一些权重,但可能不会删除旧网址并阻止您重复内容注意事项。 它特别用于你有urls添加一些与内容相关的查询参数。 http://something.com/1234/234?ref=g1http://something.com/1234/234?ref=widardnb对您来说是相同的网址,但谷歌会将其视为不同的网址,现在在这种情况下,您会提供规范网址http://something.com/1234/234。这是你,因为你无法控制联盟会员等人可能会附加到你的网址。

  2. 如果您想要永久地向用户显示美化网址。然后你必须做301重定向。

  3. 为此,请在apache配置文件中使用mod_rewrite。

    LoadModule rewrite_module /path/to/modules/dir/mod_rewrite.so
    
    RewriteEngine On
    
    RewriteBase /
    RewriteCond %{QUERY_STRING} ~ !^$ [OR]   #Query string is not empty
    RewriteCond %{REQUEST_URI} ~ ^(.*)\.(.*)$ #Your url path have . in between
    RewriteRule .*  %1 [R=301,L]  #then redirect to path without extension (else all are handled as it is).
    

    同时启用重写日志

    RewriteLog "/path/to/log/directory/rewrite.log" #change the directory name
    RewriteLogLevel 9  #this will help you understanding whats happening behind (disable this once everything starts working) 
    

    我没有测试过,但如果有任何错误,请告诉我。