2016-04-19 26 views
1

は、だから私は、このApacheの書き換えルールを持っている:Apacheのリライトルールで文字通り特殊文字を解析する方法は?

RewriteRule ^news.php?viewStory=([0-9]+)$ index.php?page=news&viewStory=$1 

それは、私は、ウェブサイトの構造を変更していますように必要な、と私は古い構造を考慮に入れる必要があります。

1つのことを除いて、すべて正しく動作します。私はそれを解析する必要がありますか?半角(^news.php?...)の文字は文字通り特殊文字と見なされません。しかし、私は他の特殊文字を正常に動作させたい。

これを行う正しい方法は何ですか?私はどこにいても解決策を見つけることができません。

+0

バックスラッシュ: '\? ' – Laurel

+0

私はそれを試みました - うまくいきません。 – user3420034

答えて

2

このようにクエリ文字列を使用することはできません。条件にクエリー文字列を使用して、それが存在するかどうかを確認する必要があります。次に、取り込まれた逆参照をルールで使用します。それがあなたのためにどのように機能するか教えてください。

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^viewstory=([0-9]+)$ 
RewriteRule ^news\.php$ index.php?page=news&viewStory=%1 [R=301,L] 
+0

それは動作していないようです。私は、その部分だけではなく、RewriteCondで完全なURLを必要としませんか? – user3420034

+1

いいえ、あなたはしません。それは私のためにうまく動作します。キャッシュを試してクリアしてみてください。 –

+0

'viewstory'を 'viewStory'に変更した後にはうまくいきました。 :) – user3420034