【问题标题】:mod_rewrite URL to a deep linkmod_rewrite 指向深层链接的 URL
【发布时间】:2011-02-07 15:10:14
【问题描述】:

我想知道这在 mod_rewrite 中是否可行,是否有人知道它的语法。

浏览器接收:

http://example.com/video/my-first-vid/

mod_rewrite 重定向到:

http://example.com/#/video/my-first-vid/

谢谢!

【问题讨论】:

    标签: .htaccess mod-rewrite friendly-url deep-linking swfaddress


    【解决方案1】:

    您似乎不能使用 mod_rewrite 重定向到 /#/video/my-first-vid/ 因为 # 符号是 urlencoded 并且它会重定向到 http://example.com/%23/video/my-first-vid/ 这显然不是' t 你在找什么。这几天我在 Apache 1.3 上进行了测试。

    您可以为重定向创建单独的脚本。为此添加新规则:

    RewriteRule ^video/?$ /redirector.php?page=video [NC,L,QSA]    
    RewriteRule ^video/(.*)$ /redirector.php?page=video&subpage=$1 [NC,L,QSA]
    

    但您可能还需要手动解析查询字符串,因为它可能是这样的:

    /video/my-first-vid/?refID=test
    

    下面是一些关于 PHP 的简单示例:

    <?php
      $page = (isset($_REQUEST["page"])) ? trim($_REQUEST["page"]) : "";
      $subPage = (isset($_REQUEST["subpage"])) ? trim($_REQUEST["subpage"]) : "";
    
      // setting the redirect URL, your conditions here
      if ($page == "video") 
      {
        $url = "/#/video/" . $subPage;
      } 
      else
      {
        $url = "/"; // some default url
      }
    
      header("Location: " . $url);
      exit;
    ?>
    

    【讨论】:

    • 哇,谢谢!这是一个很好的例子。然而,我确实偶然发现了一种似乎有效的方法RewriteRule ^(\w+)/(\w+)/?$ /#/$1/$2/ [NE,R,L] - 它需要 mydomain.com/video/video1mydomain/#/video/video1 我认为标志允许哈希(#)通过。您认为这会导致任何 SEO 问题吗?
    • @JCraine modrewrite 规则后的 [NE] 标志(没有 URI 转义输出)实际上解决了问题。所以不需要为我以前的解决方案而烦恼,只需添加一个标志 :) 谢谢!
    【解决方案2】:

    我不确定是否在 URI 中嵌入“#”,因为这通常是一个片段标识符,但您可以试试这个:

    RewriteRule "^(?<!#/)(.*)" "#/$1" [R=301,L]
    

    这应该将没有前面有'/#'的任何东西重定向到前面有'/#'的相同位置。

    【讨论】:

    • 不幸的是对我没有用,但是我确实得到了一些好的结果: RewriteRule ^(\w+)/(\w+)/?$ /#/$1/$2/ [NE ,R,L]
    • @JCraine 是的,我错过了.htaccess 标签。我已经适当地修改了答案。
    • 因此,如果您指定了链接,则使用友好的 URL; mysite/video/ 去 mysite.com/video?id=20 搜索引擎会选择第一个 url 对吗?
    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    相关资源
    最近更新 更多