2012-03-04 137 views
2

我有不同的URL(安装在.htaccess中),现在我想添加更多的功能。.htaccess排序和名称冲突

例如:

  • /部分/
  • /部分/ 1/
  • /部分/ 3 /名称/

这将显示部页(列表项目)使用默认排序,第二个是页码,第三个和第四个是排序和排序。在这种情况下,默认情况下按名称desc命令。

现在,我也想:

  • /部分/
  • /部分/ 1/
  • /部分/ 3 /产物

其为部分中,产品ID和产品名称(所以我可以通过ID查询效率)

我到目前为止:

RewriteEngine On 
RewriteRule ^([^/]+)$ index.php?section=$1 
RewriteRule ^([^/]+)/([0-9]+)$ index.php?section=$1&pagenum=$2 
RewriteRule ^([^/]+)/([0-9]+)/([^/]+)$ index.php?section=$1&pagenum=$2&orderby$3 

这适用于一个,但不是两个,任何建议?

回答

4

这里是你可以做什么:

RewriteEngine On 
RewriteBase/

您可以用这个共同的功能:

RewriteRule ^([^/]+)$ index.php?section=$1 [L,NC] 
RewriteRule ^([^/]+)/([0-9]+)$ index.php?section=$1&pagenum=$2 [L,NC] 

默认情况下,你不希望没有名称显示产品(假设你想SEO网址)

现在的页具体:

RewriteRule ^([a-z0-9\-]+)/([0-9]+)/([a-z0-9\-]+)/?$ product.php?section=$1&id=$2&name=$3 [L,NC] 

请注意这里的文件名。因为如果你有3件(部分/ ID /名称)意味着你想显示一个产品。

而现在,单/订单的具体

RewriteRule ^([a-z0-9\-]+)/([0-9]+)/([a-z0-9\-]+)/(asc|desc)/?$ list.php?section=$1&pagenum=$2&sortcolumn=$3&orderby=$4 [L,NC] 

还要注意这里的文件名。如果在URL的末尾添加desc或asc,则意味着您将显示产品列表。这最后一个参数将允许在产品和产品列表之间切换。当然,您必须始终使用ascdesc关键字。你可以使用另一种方法是使用单词list或任何其他相关的名称显示列表例如:

RewriteRule ^list/([a-z0-9\-]+)/([0-9]+)/([a-z0-9\-]+)/(asc|desc)?$ list.php?section=$1&pagenum=$2&sortcolumn=$3&orderby=$4 [L,NC] 

在这种情况下,与list开头的所有规则将显示产品的列表,而不是产品本身

+0

感谢您的帮助,我喜欢列表/选项我会另一方面使用更好的关键字再次感谢 – Alexei 2012-03-04 15:24:03

+0

不客气 – 2012-03-04 15:24:37