2011-02-09 41 views
1

フォームxページをyページにリダイレクトするためにRewriteRule inorderを使用しようとしています。 xページに2つのパラメータがあります。products.php?product = $ 1 &ページ= $ 2(myweb.com/products.php?prod ...) yは$ 1/$ 2 /(myweb.com/$1/$2/)にする必要があります。 .... パラメータを持つURLでリダイレクトするRewriteRule

は、私はテストのために、この1>

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase/
RewriteRule ^products.php?product=(.*) $1/ [R=301,L] 

を試みたが、代わりに>/$1/$1/、のようないくつかの似コードは、$1 私はQUERY_STRINGでのRewriteCondを使用しようとしましたが、何も働いた

ofcそこにはhtaccessが続行されています>

RewriteRule ^(.*)/$ $1.php [L] 

と関連していないいくつかのより多くのルール(と思う)

はあなたが私助けてくださいことはできますか?

ありがとうございました。

編集:

大規模な検索の後、私は答えを見つけました! これが答えです:説明のために今

RewriteCond %{QUERY_STRING} ^product=(.*)$ 
RewriteRule ^test.php$ %1/? [R=301,L] 

:すべての まず、クエリ文字列にマッチしますrewriteconditionを追加しました。 第2回リライトルールからクエリ文字列を削除し、$ = the continue(クエリ文字列)を削除します。私も追加する必要がありますか? (疑問符)は、再書き込みの2番目の部分>%1/?疑問符は、私が新しいURLにクエリ文字列を保存したくないという意味です。

+0

" RewriteRule'はPHPとは関係ありません。その 'php'タグを削除したいかもしれません。 –

+0

削除されましたが、PHPを使用する人の95%がhtacces(rewriterules)も使用するため、これはPHPに関連していると思います。 – Ron

答えて

3

ルールの最初の部分には、サーバーが要求を比較できる正規表現を含める必要があります。例えば:http://somedomain.fake/somepage/を取り、http://somedomain.fake/index.php?page=somepageにそれをリダイレクトします

RewriteRule ^([^/]+)/? index.php?page=$1 [L] 

。ルールの最初の部分が一致し、2番目の部分が処理されます。そこの私のルール "([^ /] +)"は、何にもマッチする正規表現です。ルールの動作を絞りたい場合は、正規表現をカスタマイズして特定の文字列部分を含めるか除外することができます。

ルールの上に以下の条件を追加することをおすすめします。ルールに一致するファイルまたはディレクトリが実際に存在する場合、サーバーは実際のファイルを書き換えで上書きしないようにします。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

.htaccessおよびmod_rewriteは、古い引用符を使用するために、ブードーです。このようなことを実稼働中のサイトに実装する前に、徹底的に調べてください。

---------------------編集:議論の後に更新し

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^product=([^/]+)$ 
RewriteRule ^products\.php$ %1.php [L] 

OR

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^product=([^/]+)$ 
RewriteRule ^products\.php$ %1/ [L] 
+0

私はPHPページにリダイレクトしたくありません。私は独自の書き換えルールを持つページをリダイレクトしたいと思う(例えば、私は以下のルール^(。*)/ $ $ 1.php [L]を得ているので、^ products.php?product = $ 1に行くと、 $ 1 /これは彼の規則を持っています... – Ron

+0

私が言及したように、あなたはあなたの正規表現を次のように作りたいでしょう:RewriteRule^products.php?product =([^ /] +)?$ 1/[L]。ルールの最初の部分は常に正規表現または文字列(変数なし)です.2番目の部分は、最初に使用された正規表現によって収集された変数を使用する部分です。 –

+0

これを試してみました> RewriteRule^products.php?商品=([^ /] +)?www.youtube.com [R = 301、L]、myweb.com/products.php?product=testに行ってもYouTubeにリダイレクトされませんでした。 – Ron

関連する問題