1

私は htaccess がどのように機能するかを知っていますが、書き方の構文にいつも混乱しています。誰かが以下の htaccess の問題を解決するのを手伝ってくれたら幸いです。

次のようなものにリダイレクトするようにリンクしているページがいくつかあります

http://mydomain.com.au/product-details.php/142/categoryAbstract

しかし、以前の開発者のミスにより、その URL が

http://mydomain.com.au/product-details.html/142/categoryAbstract

彼はすべての php ページを html に変換しました (これを行う意図が何なのかはよくわかりません) が、

これで、URL がhttp://mydomain.com.au/product-details.php/142/categoryAbstractであっても機能するはずです

彼はこれに以下の htaccess を使用しましたが、機能していません。URLを手動で変更する.phpと、.htmlすべてが正常に機能します。

RewriteRule ^product-details.html/(.*)/(.*)$    product-details.php?productid=$1&category=$2 

URLでさえ機能するように、コードの作業行が必要http://mydomain.com.au/product-details.php/142/categoryAbstractです。

4

2 に答える 2

0
RewriteRule ^product-details.html/(.*)/(.*)$ product-details.php?productid=$1&category=$2 

このルールが行うことはproduct-details.html/、最後の / の前後のすべてを取得し、最後の / の後から行末まで 2 番目のビットを取得することです。次に、それらのビットを取得して、$1 と $2 がある場所に配置します。

.html と .php を受け入れるように変更するには、次のように変更できます

RewriteRule ^product-details(.html|.php)/(.*)/(.*)$ product-details.php?productid=$2&category=$3

グラブしている最初のビットは数字であり、貪欲なセレクターであるように見えるため、(.*)数字のみを選択する ([0-9]*) に置き換える方がよい場合があります。そうすれば、カテゴリに /s が含まれていても問題ありません。あなたに与える:

RewriteRule ^product-details(.html|.php)/([0-9]*)/(.*)$ product-details.php?productid=$2&category=$3
于 2013-04-26T15:36:56.633 に答える