类别和子类别mod重写

时间:2016-09-08 15:03:11

标签: php .htaccess mod-rewrite

我将这段代码作为子类别网址的示例,

文件为subcategory.php

指向网址的链接如下:

 <a href="store/subcategory.php?catid=guitars&subcatid=electrics"></a>
到目前为止,

和htaccess规则是

RewriteRule ^store/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ subcategory.php?catid=$1&subcatid=$2 [L]

结果我想要完成这个, 转此网址:

www.mysite.com/store/subcategory.php?catid=guitars&subcatid=electrics

www.mysite.com/store/guitars/electrics

我该怎么做?我错过了什么?

2 个答案:

答案 0 :(得分:1)

您需要一个额外的重定向规则:

RewriteEngine On

RewriteCond %{THE_REQUEST} /subcategory\.php\?catid=([^\s&]+)&subcatid=([^\s&]+) [NC]
RewriteRule ^ /store/%1/%2? [R=302,L,NE]

RewriteRule ^store/([\w-]+)/([\w-]+)/?$ subcategory.php?catid=$1&subcatid=$2 [L,QSA,NC]

答案 1 :(得分:0)

你做错了你的HTML。应该出现在客户端html中的唯一网址是&#34;漂亮的&#34;的:

<a href="http://www.example.com/store/guitars/electrics">

这意味着你的mod_rewrite是无用的,因为客户端发送到你的服务器的URL已经是丑陋的了。您应该在构建页面时生成漂亮的URL。