0

末尾のスラッシュを入力せずに URL を機能させるのに問題があります。

これは:

www.domain.com/shop/buy/products/show/range/

.htaccess 書き換えルールは次のとおりです。

RewriteRule ^shop/buy/([A-Za-z0-9]+)/show/([A-Za-z0-9\-\,]+)/?$  _shop/products.php?trg=${productmap:$1}&range=$2 [L]

末尾のスラッシュ (URL には入れたくない) で動作しますが、なしでは動作しません。また、URL から '/show/' を削除した場合 (これはできません)、末尾のスラッシュなしで機能するか、'new -product'、それも機能します。

ただし、この URL は末尾のスラッシュの有無にかかわらず機能します。

www.domain.com/shop/buy/products/show/range/color

この URL の .htaccess 書き換えルールは次のとおりです。

RewriteRule ^shop/buy/([A-Za-z0-9]+)/show/([A-Za-z0-9\-\,]+)/([A-Za-z0-9\-\,]+)/?$    _shop/products.php?trg=${productmap:$1}&range=$2&color=$3 [L]

末尾のスラッシュなしで最初の URL を機能させるにはどうすればよいですか? 私は最近 .htaccess を使用した初心者なので、これは非常に明白なことかもしれませんが、コードを見つめたり、書き換えに関するフォーラムの投稿を読んだりするのに何時間も費やしましたが、これを解決できませんでした。ありがとうございました!

4

2 に答える 2

0

よくわかりませんが/?、中かっこを入れてみてください: (/)?、これでうまくいくと思います:

RewriteRule ^shop/buy/([A-Za-z0-9]+)/show/([A-Za-z0-9\-\,]+)([/]?)$  _shop/products.php?trg=${productmap:$1}&range=$2 [L]
于 2013-01-24T08:48:20.350 に答える
0

このコードをテストできます

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase   /
RewriteRule ^shop/buy/(.*?)/show/(.*)/(.*)$ _shop/products.php?trg=$1&range=$2&color=$3 [S,L,QSA]
RewriteRule ^shop/buy/(.*?)/show/(.*)$ _shop/products.php?trg=$1&range=$2 [S,L,QSA]

サンプル:

www.domain.com/shop/buy/products/show/range/

www.domain.com/shop/buy/products/show/range

リダイレクト先:

www.domain.com/_shop/products.php?trg=products&range=range

と:

www.domain.com/shop/buy/products/show/range/color

www.domain.com/shop/buy/products/show/range/color/

リダイレクト先:

www.domain.com/_shop/products.php?trg=products&range=range&color=color

もう1つの方法は、このコードのみを使用できます

RewriteRule ^shop/buy/(.*?)/show/(.*)$ _shop/products.php?trg=$1&range=$2 [L,QSA]

phpでその分割範囲の後

list($range,$coler)=explode("/",$_GET['range']); 

それも仕事です。

于 2013-01-24T09:21:07.637 に答える