【问题标题】:Url rewrite without changing the paths to assets在不更改资产路径的情况下重写 URL
【发布时间】:2015-09-10 16:44:53
【问题描述】:

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

需要帮助。 谢谢

【问题讨论】:

  • 使用框架还是从头开始php开发?openclassrooms.com/courses/du-rewriting-realise-avec-du-php
  • 如果您必须更改代码中的所有路径,这表明您的网址有问题。它们的编码应该与应用程序的位置无关,因此是相对的。我们不能说更多,因为您没有发布您的代码。您希望我们如何在没有代码的情况下提供帮助?
  • 通过更改 urls oof 代码我的意思是说页面导航就像“window.location.href='coupon.php?id='+id+'&title='+name.split( "").join("-")" 如果我​​在 htaccess 中重写 url,我也必须更改这些。我认为。

标签: php .htaccess mod-rewrite url-rewriting


【解决方案1】:

您必须更改代码中的所有 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'];
     });
});

【讨论】:

  • 但我需要这些用于 SEO。
  • 好的!为此,我认为我也必须使用绝对路径更改所有资产 url?或者没有那个可以处理?
  • yes.. 所有 URL 都必须使用绝对路径,包括资产。这样更容易..
【解决方案2】:

您可以在 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&amp;title=abcd

【讨论】:

    【解决方案3】:

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

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

    但是,那是以前……现在是。

    事实上,随着“googlebot”等搜索引擎爬虫取得的进展,情况恰恰相反。

    最好保留您的动态 URL,不要重写它们(出于 SEO 目的)。

    此摘录来自 Google 网站管理员中心...

    误区:“无法抓取动态网址。”
    事实:我们可以抓取动态网址并解释不同的参数。如果您尝试使您的网址看起来是静态的,并在此过程中隐藏为 Googlebot 提供有价值信息的参数,我们可能会在抓取和排名您的动态网址时遇到问题。一项建议是避免重新格式化动态 URL 以使其看起来是静态的。始终建议尽可能使用带有静态 URL 的静态内容,但如果您决定使用动态内容,您应该让我们能够分析您的 URL 结构,而不是通过隐藏参数并使其看起来静态来删除信息。

    这是否意味着我应该完全避免重写动态 URL?
    这是我们的建议,除非您的重写仅限于删除不必要的参数,或者您非常努力地删除所有可能导致问题的参数。如果您转换动态 URL 以使其看起来是静态的,您应该知道我们可能无法在所有情况下正确解释信息。如果您想为您的网站提供静态等价物,您可能需要考虑通过提供真正静态的替换来转换底层内容。 ...但是,如果您使用 URL 重写(而不是复制内容)从动态站点生成看起来静态的 URL,则可能弊大于利。

    您可以阅读全文here

    我只是通过搜索“为动态页面重写 URL”一词找到了这一点。 (在雅虎...不是谷歌)

    还有this article,作者是 Barry Schwartz。

    Barry Schwartz 是 Search Engine Land 的新闻编辑,拥有纽约的网络咨询公司 RustyBrick。他还经营着 Search Engine Roundtable,这是一个关于非常高级的 SEM 主题的热门搜索博客。

    【讨论】:

    • 你是对的,但请注意SEO friendly URLs 对用户体验也很重要。当用户看到像 index.php?p=test&amp;id=23 而不是 /test/this-is-my-phone-title 这样的 URL 时,用户的看法肯定会有所不同。你应该考虑到所有事情。不仅仅是搜索引擎。
    • @MateiMihai - 我同意。这就是为什么我将“出于 SEO 目的”放在括号中。如果您的唯一目的是 SEO,那么您不应该这样做。如果您的主要目的是提高人类的可读性和记忆力,那么可以。 OP的问题是“对于SEO”。 :)
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多