1

私は醜いURLをより親しみやすいものに変換するCMSシステムを持っています。

これまでのところ、ページのURLが次のようになっているのではなく、次のようになっています。

/pagebase.php?id=3644

私はそれをより親しみやすくするために各ページのURL書き込み設定を持っています。

例えば:

RewriteRule ^/events$   /pagebase.php?id=3644 [I]

そのため、ユーザーがdomain.com/eventsと入力すると、URLの上に表示されます。

これは、このようなことを実行できるようにクエリ文字列を追加する必要があるこのページを除いて、ほとんどすべてのページで機能します。

www.domain.com/events?y=2010=&m=&1d=2

それは次のように書き直します

www.domain.com/pagebase.php?id=3366&y=2010=&m=&1d=2. 

唯一の問題は、?y = 2010 =&m =&1d = 2をクエリ文字列として認識せず、URLの一部として認識して失敗するため、URL書き込みの一致が失敗することです。

クエリ文字列を通過できるように、書き換えファイルを変更する必要があります。

RewriteRule ^ / events-%QUERYSTRING%$ /pagebase.php?id=3644 +%QUERYSTRING%[I]のようなことをしたい

一致からクエリ文字列を削除し、書き込まれたURLの最後に追加します。これを行うためにURL書き換えがどのように機能するかについての十分な知識がありません。

これが私のリライトファイルの例です。

RewriteRule ^/events$   /pagebase.php?id=3644
RewriteRule ^/faqs$   /pagebase.php?id=3659
RewriteRule ^/gallery$   /pagebase.php?id=3645
RewriteRule ^/gifts$   /pagebase.php?id=3646

すべてのページで機能するものが必要です。特定のクエリ文字列を処理するために各ルールを変更する必要はありません。クエリ文字列を渡す一般的なソリューションが必要です。

4

1 に答える 1

1

オプションのクエリ文字列を照合[QSA]して、修飾子を追加してみてください。

RewriteRule ^/events(\?.*)?$   /pagebase.php?id=3644 [QSA,L]
RewriteRule ^/faqs(\?.*)?$     /pagebase.php?id=3659 [QSA,L]
RewriteRule ^/gallery(\?.*)?$  /pagebase.php?id=3645 [QSA,L]
RewriteRule ^/gifts(\?.*)?$    /pagebase.php?id=3646 [QSA,L]
于 2013-01-13T14:38:28.027 に答える