古いURLを新しいクリーンなURLに書き直す

I have me .htaccess file happily rewriting things like /conferences/details/21 to /index.php?pages=conferences&var1=details&var2=21.

私はPiwikにこのサイトを追跡させています。これは、URLを更新していないサイトからの多くの紹介を表示しています(これは非常に新しいサイトです)。

http://www.domain.com/index.cfm?page=conference&intConferenceID=81

そして

http://www.domain.com/index.cfm?page=conference&intConferenceID=88&type=conference

私はそれらを/conference/details/[数値ID] に書き直したいと思います。

私はこれを試した:

RewriteRule ^index.cfm?page=conference&intConferenceID=(\d+)/?$ /conferences/details/$1 [L,NC,QSA]

2番目の例を無視してください。しかし、それは私に、 index.cfm が見つからないと言う404を与える。

上記の書式設定されたリンク(IDが変更されます)を/conference/details/[ID] に書き換えるために書き換えルールを作成する必要はありますか?

0

1 答え

RewriteCondからクエリ文字列を抽出することができます。

RewriteCond %{REQUEST_URI} ^/index.cfm
RewriteCond %{QUERY_STRING} page=(.+)&intConferenceID=([^&]+)
RewriteRule . /%1/details/%2 [L]

Not sure where the "details" comes from based on the /foo/bar/21 -> /index.php?f=foo&b=bar&arg=21 rewriting.

1
追加された
どうもありがとう。 details は、/conference/details/21 のようなクリーンURLからのものです。私はそれに応じて私の質問を編集しました。
追加された 著者 Bojangles,
基本的に、RewriteRuleはクエリ文字列を書き換えず、パスだけを書き換えます。 RewriteCondを使用してクエリ文字列を照合し、それらの一致に%
追加された 著者 Jon Lin,