我将这段代码作为子类别网址的示例,
文件为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
我该怎么做?我错过了什么?
答案 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。