0

我创建了一个自定义产品/电子商务网站。它有一个类别、子类别和产品。以下是我要重定向的网址:

website.com/clothes
website.com/clothes/
website.com/clothes/tshirts
website.com/clothes/tshirts/
website.com/clothes/tshirts/bluepinned
website.com/clothes/tshirts/bluepinned/

这是 .htaccess 条目。有没有办法在一行中写下以下内容?例如,如果 URL 是 website.com/clothes/tshirts 确保 PHP 文件意识到我想要加载 tshirts 类别,而不是在衣服类别中显示名为 tshirts 的产品。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(clothes)/([^/\.]+)/([^/\.]+)/?$ products.php?c=$1&sc=$2&p=$3 [NC,L,QSA] 
RewriteRule ^(clothes)/([^/\.]+)/?$ products.php?c=$1&sc=$2 [NC,L,QSA] 
RewriteRule ^(clothes)/?$ products.php?c=$1 [NC,L,QSA] 

在加载产品图像时,有时我也会遇到 406 错误 - 是否有任何重写规则可能导致这种情况发生。无论如何,实际的图像都在一个单独的目录中 website.com/images/clothes/tshirts/bluepinned.jpg

4

1 回答 1

0

您需要将条件分别应用于每个规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(clothes)/([^/\.]+)/([^/\.]+)/?$ products.php?c=$1&sc=$2&p=$3 [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(clothes)/([^/\.]+)/?$ products.php?c=$1&sc=$2 [NC,L,QSA] 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(clothes)/?$ products.php?c=$1 [NC,L,QSA] 

也可能存在相对路径与绝对路径问题,可以通过添加

<base href="/">

在您的页眉中。

于 2012-08-23T02:07:22.657 回答