1

次の 2 つの URL を取得しました。

/ポートフォリオ/stamped_concrete

/p_details.php?id_cat=23&?id=91

2 番目の URL を次のように書き換えたい: /portfolio/stamped_concrete/23/91

stamped_concrete は動的 URL であるため、これを解決する方法がわかりません。また、2 つのファイル (portfolio.php と p_details.php) は同じディレクトリにあります。

どうすればこれを達成できますか?

編集:

stamped_concrete は、以前に書き直した可変文字列でもあり、機能します。

RewriteRule ^services/([a-z0-9_-]+)$    /services.php?url=$1    [NC,L,QSA]

では、RewriteRule 内でどのように呼び出すのでしょうか?

これは正しい軌道に乗っているでしょうか?

RewriteCond %{QUERY_STRING} url=([a-z0-9_-]+)
RewriteCond %{QUERY_STRING} id_cat=([0-9]+)
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule /p_details.php?.* /portfolio/$1/$2/$3
4

1 に答える 1

0

これを試して:

RewriteCond %{QUERY_STRING} id_cat=([0-9]+)
RewriteCond %{QUERY_STRING} id=([0-9]+)
RewriteRule /p_details.php?.* /portfolio/stamped_concrete/$1/$2

少し調整する必要があるかもしれません - RewriteRule 部分が正しいかどうかはわかりません (申し訳ありません)。

しかし、重要な部分は QUERY_STRING です。Apache ドキュメントを参照してください: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

また、http://wiki.apache.org/httpd/RewriteQueryStringから

私はいつも後方参照を混同するので、試してみてください。ドル記号かパーセント記号のどちらかです (本当にドル記号だと思っていました...)

(見積もり)

クエリ文字列をパスの一部にする

http://example.com/path?var=valという形式の URL を取得し、それを http://example.com/path/var/val変換します。この特定の例は、文字、数字、およびアンダースコア文字のみを含む単一の var=val ペアに対してのみ機能することに注意してください。

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

(引用文終了)

したがって、おそらく「RewriteRule ^/p_details.php /portfolio/%1/%2/%3」と言うことができます。

于 2012-04-03T21:52:35.343 に答える