2012-03-01 8 views
0

私はPHPを使ってWebアプリケーションを開発していて、Apacheのmod_rewriteを使って "フレンドリー"なURLを持っています。すべてがOKである

mysite.com/article/112 
mysite.com/article/145 
mysite.com/article/40 

が、私はmysite.com/article/に移動した場合に実際にこの

mysite.com/article/112?referer=google 

のような余分なパラメータを受け取ることができるようにしたい:

ように私はフレンドリーなURLを持っています112?referer = google私のページを見ることができますが、私は$ _GETの "referer"パラメータを持っていません。

どのように私はこの?;に対処することができます)

編集 解決:

Rewriterule ^article/([0-9]+)$ index.php?page=article&article_id=$1 

と新しいものがある:D

は、私は私の古いルールがあったことを言及するのを忘れてしまいました:

Rewriterule ^article/([0-9]+)$ index.php?page=article&article_id=$1 [QSA] 
+2

を表示して、あなたがそこにパラメータが不足しているので、あなたがルールを書き換えることを使用することができます。 – Alexander

答えて

4

add [QSA] modifiあなたの書き換えルールに戻す

は、あなたが望むものを正確に追加することを意味します。

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^(.*[^/])/?$ 
RewriteCond %{DOCUMENT_ROOT}%1.php -f 
RewriteRule .+ %1.php [QSA,L] 

.htaccessファイルに入れたり、ウェブサイトのサーバ設定内の領域に:

+0

ありがとう、それは私が探していたものです。 –

+0

私の古いルールがあった。 のRewriteRule ^記事/([0-9] +)$ index.phpのページ=記事&のarticle_id = $ 1 新しいものです:? のRewriteRule ^記事/([0-9] +) $ index.php?page = article&article_id = $ 1 [QSA] –

0

は、ここで私はこれを行うために使用するmod_rewriteのです。

0

による

デフォルトでは、クエリ文字列は変更されずに渡されます。ただし、クエリ文字列部分を含む置換文字列にURLを作成することはできます。置換文字列内の疑問符を使用して、次のテキストをクエリ文字列に再挿入する必要があることを示します。既存のクエリ文字列を消去する場合は、置換文字列を疑問符だけで終了します。新しいクエリ文字列と古いクエリ文字列を組み合わせるには、[QSA]フラグを使用します。

0

あなたは.htaccessの

RewriteRule ^article/([0-9]+)/(.*)$ somefile.php?id=$1 [L] 
+0

これは実際には間違っています。最初の部分では異なるセマンティクスを持っています。 – apfelbox

+0

あなたは変更できますか? 〜/あなたが好きならば –

+0

正確に。しかし、それは答えを解決しません - あなたは '[QSA]'フラグを使わなければなりません。 – apfelbox

関連する問題