2011-10-17 5 views
1

.htaccessファイルに問題があります。私はグーグルで試してみましたが、役に立たないものは見つかりませんでした。htaccess内外の要求の区別

index.phpにページを読み込むAJAXリクエストがあります。それをトリガするリンクは、jqueryを介して "#"によって前置されています。したがって、domain.com/foo/bar(ワードプレスパーマリンク)をクリックすると、domain.com/#/foo/barがブラウザに表示され、コンテンツはAJAX経由で読み込まれます。

私の問題は:これらはブログの投稿であるため、外部リンクは実際のリンク(domain.com/foo/bar)を取得しているため、domain.com/#/foo/barにリダイレクトされるようにしますajaxはハッシュをチェックし、その魔法を実行します)。

here

先頭に追加のためのjQueryのコードは次のとおりです。

$allLinks.each(function() { 
     $(this).attr('href', '#' + this.pathname); 
... 

と、スクリプトは今、私はhtaccessファイルで動作するようにリダイレクトを取得しようとしています

if (hash) { //we know what we want, the url is not the home page! 
     hash = hash.substring(1); 
     URL = 'http://' + top.location.host + hash; 
     var $link = $('a[href="' + URL + '"]'), // find the link of the url 
... 

をチェックします。私は、要求が

RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1 #??? 

外部または内部にある場合とURIが、それは、その後のコメントだ、\%23は本当に何とか動作しませんので、問題である「/#/」で始まるかどうかを確認する必要があります。

RewriteCond %{REQUEST_URI} !^/\%23/(.*)$ #??? 

は、どのように私は、これは単に内部のAJAXのものに影響を与えることなく、domain.com/#/foo/barするdomain.com/foo/barから外部要求をリダイレクトするように動作するのですか?

+0

私はあなたの問題に(もっと簡単に)クライアント側の解決策を提案します。あなたのリンクに '#'を追加するjQueryコードであなたの答えを更新してください。 – vzwick

+0

編集:jqueryコードを追加 – mecreative

答えて

0

私はあなたの$allinks変数がこれと同様の方法で割り当てられているとします

$allinks = $('a'); 

ではなく、これを実行します。

$allinks = $('a[href^="' + document.location.protocol + '//' + document.location.hostname + '"]'); 

をこれだけあなたのhash -yスタイルへの内部リンクを変換します。私はここにPHPでそれをやった[OK]を

+0

ニースは考えましたが、問題は少し異なります。私は外部ページからの解決策が必要です。インデックスページではなく、特定のblogpostにリンクしているFacebookとGoogle。ページ/ foo/barが存在するので、これらのページへのリンクは/ foo/barを直接指し示しますが、ハッシュ-yの方法でリダイレクトする必要がありますので、ブログポストはAJAXを介して正しいコンテキストにロードされます。あなたの助けのためにthx – mecreative

0

はコードあり

$path = $_SERVER["REQUEST_URI"]; 
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
     echo "It's ajax"; 
    } else { 
    if(strpos($path, '/#/') === false) { 
     header("Location: http://schnellebuntebilder.de/#".$path); //ONLY WORKS IF THERE IS NO BODY TAG 
    } 
    } 

より良い解決策があるはずですが、これは私の場合には、今のところ、ページ/ fooの/バーがありませんので、トリックを行いますheader.phpは含まれていません。> body <タグがなく、PHPの "header()"関数が機能します。もし誰かがこのためのhtaccessスクリプトを知っているなら、私は知り、学びたいと思っています。

関連する問題