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/”(虽然我不能这样做),它可以在没有尾部斜杠的情况下工作,或者如果“range”包含破折号“-”,如“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

您可以测试此代码

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

另一种方法是您只能使用此代码

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 回答
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 回答