2012-04-10 12 views
0

PHPで書かれたシンプルなサイトを1ページのHTML専用ソリューション(# -sectionsを使用)に書き直しました。.htaccessリダイレクトクエリ文字列を手動でハッシュにマッピングする

新しいハッシュベースのURLに使用されていた古いクエリ文字列を代わりにマップしたいと考えています。つまり、?id=itemA#newAndImprovedItemAになります(古いIDは新しいハッシュと同じではありませんが、可能な値は4つしかないので、手作業でマップすることはあまりありません)。どうやらこれは単純なRedirectPermanentでは動作しませんが、私が理解しているところからはRewriteRulesを使う必要があります。残念なことに、私はそれをまったく経験していないので、まだ適切に働いているものは考え出すことができませんでした。新しいindex.htmlに私をリダイレクトしますが、ハッシュを追加しません

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^id=itemA$ 
RewriteRule ^index.php$ /#newAndImprovedItemA [L] 

:私は使用しています現時点では

。正直なところ、私はあまりコードを実行する手がかりを持っていないので、それは離れているかもしれませんが(その場合は私を負担してください)、残念なことに、人々が他の投稿で何を書いているのか理解できませんそのトピック。

index.php?id=itemA#newAndImprovedItemAにマップするだけの簡単な方法はありますか?

答えて

1

ハッシュは、純粋にクライアント側の操作です。あなたの書き換えは、クライアントにまったく影響を与えずに、Apacheの内部のみのリダイレクトを行います。本格的なHTTP 30xリダイレクトを強制する必要があります(例:

RewriteRule ^index.php$ /#newAndImprovedItemA [L,301] 
               ^^^^ 

クライアントを往復します。これの欠点は、別のHTTP要求サイクルがかかることと、ユーザーのアドレスバーのアドレスを変更することです。私はこのhtaccessのコードでそれを解決した(少し汚れますが、完璧に動作)しました

+0

リダイレクトは、私が実際に新しい(変更された)コンテンツを提供していますように、私は古いURLへのリンク人(とGoogle)の世話をしたい*実は、私が欲しいです*。 – m90

+0

それに加えて、 '[L、301、NE]'(つまり非エスケープモード)を使用して、 '# 'シンボルが'%23'に変わらないようにする必要があることを発見しました – m90

1

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteCond %{REQUEST_URI} !\.(?i)(jpg|png|gif|xml|json|css|js|php|html|htm)$ 
RewriteRule ^([^/]*)($|/)$ /test2/?$1#$1 [R,NE,L] 
RewriteRule ^([^/]*)/([^/]*)($|/)$ /test2/?$1/$2#$1/$2 [R,NE,L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)($|/)$ /test2/?$1/$2/$3#$1/$2/$3 [R,NE,L] 

"/ TEST2は、" ローカルWAMPのテストドメインのみ

例の結果をpourposeだけのためのものです:

http://localhost/test2/111 --> http://localhost/test2/?111#111 
http://localhost/test2/111/ --> http://localhost/test2/?111#111 
http://localhost/test2/111/222 --> http://localhost/test2/?111/222#111/222 
http://localhost/test2/111/222/ --> http://localhost/test2/?111/222#111/222 

は、このための解決策を見つけるために私に数時間を要するため、この情報がお役に立てば幸いです。 #サイトを使用していて、facebook open graphが必要な場合、これはこれまでのところ最良の解決策です。

さようなら