2011-02-07 13 views

答えて

0

#記号がURLエンコードされたとして、あなたが/#/ビデオ/私の初-VID/にリダイレクトするためのmod_rewriteを使用することはできませんようで、それはあなたが探しているではないものです明らかにされ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] 

しかし、それはのようななめらか可能性として、あなたはまた、手動でクエリ文字列を解析する必要があります:このために新しいルールを追加

<?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; 
?> 

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

ここではPHP上でいくつかの簡単な例です

+1

うわー、ありがとう!それは素晴らしい例です。しかし、私は 'RewriteRule ^(\ w +)/(\ w +)/?$ /#/ $ 1/$ 2/[NE、R、L]'で動作するように見える方法に遭遇しました。 - ** mydomain.com/video/video1 **〜** mydomain /#/ video/video1 **私はフラグがハッシュ(#)を通過させることができると思います。これは、あなたが考えるSEOの問題を引き起こす可能性がありますか? – JCraine

+0

@JCraine modrewriteルールが実際に問題を解決した後、[NE]フラグ(出力のURIエスケープなし)。だから、私の以前の解決策を気にする必要はありません、ちょうど1つのフラグを追加してください:)ありがとう! –

0

ことが一般的にフラグメント識別子ですので、私は、URIで「#」を埋め込むことについてはよく分からないが、あなたはこれを試みることができますそれの前に '/#'を置き、同じ場所にと '/#'を付けてください。

+0

残念ながら私のためにはうまくいきませんでしたが、次のような良い結果が得られました:RewriteRule ^(\ w +)/(\ w +)/?$ /#/ $ 1/$ 2/[NE、R、L] – JCraine

+0

@JCraineええ、私は '.htaccess'タグを見逃しました。私は答えを適切に修正しました。 – RoUS

+0

リンクを指定した場合はフレンドリーなURLを使用します。 mysite/video/mysite.com/video?id=20に移動すると、検索エンジンは最初のURLを取得します。 – JCraine

関連する問題