2016-04-02 4 views
0

私の質問は、リンク(domain.com/?brandID=1 &の名前= Beretta)をクリックしたときに表示するRewriteRuleのURLを取得する方法です。htaccess rewriteRuleが新しいURLを表示しない

私のテストでは、index.phpと何か関係があると思われますが、そうでないかもしれません。私のスクリプトは、GET変数が設定されていることをトリガーにして、DBに照会し、結果を表示するページ(および「醜い」URL)を含みます。

ここでの.htaccessコードだ:

# Rewrite for ?brandID=1&name=Name 
RewriteRule ^pistol-brand/([0-9]+)/([0-9a-zA-Z_-]+) ?brandID=$1&name=$2 [NC,L] 

私はdomain.com/pistol-brand/1/beretta

でdomain.com/?brandID=1 &名=ベレッタを交換したいです上のコードは「醜い」URLを表示しますが、URLをRewriteRuleの状態(domain.com/pistol-brand/1/beretta)に変更すると、そのページが機能します。

リンクをクリックしたときに「新しい」URLを表示するにはどうすればよいですか?

ありがとうございます。

+0

'?brandID = $ 1&名= $ 2 'は、有効なURLではありませんSEF形式に醜いURLをリダイレクトするために1より多くを必要とする、あなたはそれに書き換えることができません。 – arkascha

+0

私も失敗しました:\t RewriteRule^pistol-brand /([0-9] +)/([0-9a-zA-Z _-] +)index.php?brandID = $ 1&name = $ 2 [NC、L] – JimB814

+0

URL書き換えの仕組みを理解しているかどうかはわかりません。これは間違ってはいけません!ここで多くの不満を避けようとしています。上記のルールは、あなたが 'http:// domain.com/?brandID = 1&name = Beretta'のようなリンクをクリックすれば、何もしません。あなたは、代わりにこのようなリンクを持って、それをクリックする必要があります: 'http:// domain.com/pistol-brand/1/beretta'。その後、実際にはURLの書き換えは、スクリプトが処理できるように、そのリクエストを_interternally _書き直す必要があります。したがって、すでに「かなり」のリンクが表示されているため、ブラウザに表示されているURLを「変更する」必要はありません。 – arkascha

答えて

0

あなたは

##1)Redirect /?brandID=foo&name=bar to //pistol-brand/foo/bar## 
RewriteCond %{THE_REQUEST} /\?brandID=([^&]+)&name=([^\s&]+) [NC] 
RewriteRule^/pistol-brand/%1/%2? [L,R] 
##2)Rewrite /pistol-brand/foo/bar to /?brandID=foo&name=bar## 
    RewriteRule ^pistol-brand/([0-9]+)/([0-9a-zA-Z_-]+) ?brandID=$1&name=$2 [NC,L] 
+0

このソリューションを提供していただき、ありがとうございます。できます。私はどのように、そしてなぜそれを理解することを望みます。ありがとうございました。 – JimB814

関連する問題