これが mod_rewrite で可能かどうか、そして誰かがその構文を知っているかどうか疑問に思っていました。
ブラウザは以下を受け取ります:
http://example.com/video/my-first-vid/
mod_rewrite は次の場所にリダイレクトします。
http://example.com/#/video/my-first-vid/
ありがとう!
これが mod_rewrite で可能かどうか、そして誰かがその構文を知っているかどうか疑問に思っていました。
ブラウザは以下を受け取ります:
http://example.com/video/my-first-vid/
mod_rewrite は次の場所にリダイレクトします。
http://example.com/#/video/my-first-vid/
ありがとう!
「#」を URI に埋め込むことについてはよくわかりません。これは通常、フラグメント識別子であるためです。ただし、これを試すことができます。
RewriteRule "^(?<!#/)(.*)" "#/$1" [R=301,L]
これにより、前に「/#」がないものはすべて、前に「/#」がある同じ場所にリダイレクトされます。
/#/video/my-first-vid/へのリダイレクトに mod_rewrite を使用できないようです。# 記号は 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;
?>