重写Url而不改变资源的路径


Url rewrite without changing the paths to assets

我是url重写新手。我有一个完整的网站与url像abc.com/abc.php?id=54&title=abcd。首先,我需要像abc.com/abc/54/abcd SEO友好的网址。我知道这可以通过重定向。htaccess中的url来完成(但我也必须在代码中更改所有的url)。我能做到这一点,而不改变我所有的代码url。二是如何不打扰资产。

需要帮助。由于

您必须更改代码中的所有url。其他功能不应该受到影响,因为.htaccess重写将指向旧的url。

你可以找到一个解决办法,用javascript重定向用户,但这是不建议SEO。比如:

<a href="abc.php?id=54&title=abcd">abcd</a>

JS (jQuery):

$(document).ready(function(){
     $('a').click(function(e){
         e.preventDefault();
         // parse the url to get its components
         window.location = '/' + parsedURL.filename + '/' + parsedURL.queries['id'] + '/' + parsedURL.queries['title'];
     });
});

您可以在DOCUMENT_ROOT/.htaccess文件中使用此规则:

RewriteEngine On
RewriteBase /
RewriteRule ^(['w-]+)/(['w-]+)/(['w-]+)/?$ $1.php?id=$2&title=$3 [L,QSA]

这将允许你在浏览器中使用abc.com/abc/54/abcd,它将内部路由到abc.com/abc.php?id=54&title=abcd

我知道这将是一个非常有争议的答案,但请记住…这是谷歌对这个问题的回答。

对于很多人来说,他们相信(因为他们被教导)像page.php?id=3&entry=65这样的动态url对SEO不利。

然而,那是在…这是现在。

事实上,随着"googlebot"等搜索引擎爬虫的进步,情况正好相反。

最好不要去改写你的动态url(为了SEO的目的)。

节选自Google网站管理员中心…

误解: "动态url不能被抓取。"
事实:我们可以抓取动态url并解释不同的参数。如果您试图使您的url看起来是静态的,并且在此过程中隐藏了为Googlebot提供有价值信息的参数,我们可能会在抓取和排名您的动态url时遇到问题。一个建议是避免重新格式化动态URL,使其看起来是静态的。尽可能使用静态内容和静态URL总是明智的,但如果你决定使用动态内容,你应该让我们有可能分析你的URL结构,而不是通过隐藏参数和使它们看起来静态来删除信息。

这是否意味着我应该避免重写动态url ?
这是我们的建议,除非您的重写仅限于删除不必要的参数,或者您非常努力地删除所有可能导致问题的参数。如果您将动态URL转换为静态URL,您应该意识到我们可能无法在所有情况下正确解释信息。如果您想提供一个静态的站点,您可能需要考虑通过提供一个真正静态的替代品. ...来转换底层内容但是,如果您使用URL重写(而不是复制内容)从动态站点生成静态外观的URL,则可能会造成损害而不是好处。

你可以在这里阅读全文

我发现这只是通过搜索术语"重写动态页面的URL"。(在雅虎…不是谷歌)

这篇文章是Barry Schwartz写的。

Barry Schwartz是Search Engine Land的新闻编辑,拥有一家总部位于纽约的网络咨询公司RustyBrick。他还经营搜索引擎圆桌会议,一个非常受欢迎的搜索博客,讨论非常高级的SEM主题。