mod_rewrite URL для глубокой ссылки - PullRequest
0 голосов
/ 07 февраля 2011

Мне было интересно, возможно ли это в mod_rewrite, и знает ли кто-нибудь синтаксис для него.

Браузер получает:

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

mod_rewrite перенаправляет на:

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 февраля 2011

Похоже, вы не можете использовать mod_rewrite для перенаправления на / # / video / my-first-vid / , так как знак # имеет urlencoded и он будет перенаправлен на http://example.com/%23/video/my-first-vid/, что очевидноэто не то, что вы ищете.Я тестировал эту пару дней назад на 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;
?>
0 голосов
/ 07 февраля 2011

Я не уверен насчет встраивания '#' в URI, так как обычно это идентификатор фрагмента, но вы можете попробовать это:

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

Это должно перенаправить все, что не имеет перед собой '/ #' в том же месте с '/ #' перед ним.

...