我很沮丧地使用POST
寻找干净的网址:
我的.htaccess
代码:
.htaccess
第一条规则是完美地隐藏了我的URL的.php扩展名,但第二条规则不起作用。单击产品列表中的产品ID no后,我的产品的URL。我现在正在使用免费主机。的 freehost.16mb.com/product?id=156
我的产品列表链接代码是:
RewriteEngine on
RewriteRule ^([^/\.]+)/?$ $1.php [L,QSA]
RewriteRule ^/([0-9]+)$ product.php?id=$1
因此,我尝试使用<a href="product.php?id=<?php echo $row['ID']; ?>"> link 1 array </a>
将网址清理为 freehost.16mb.com/product/156 。
我正在使用上面的.htaccess
代码,但它对我不起作用。我需要一些帮助。
答案 0 :(得分:0)
您的第二条规则未在ID之前为前导/product
做出规定,并且您的HTML锚点使用了您要重写的格式 - 这需要进行交换。
将您的锚标记更改为以下内容:
<a href="/<?php echo $row['ID']; ?>
您还需要通过添加QSA
和L
标志以及从规则模式中删除前导斜杠来稍微修正您的规则:
RewriteRule ^([0-9]+)$ product.php?id=$1 [QSA,L]
完成后,/1234
将重写为/product.php?id=1234
。
但是,如果您希望包含/product
段,请改用:
<a href="/product/<?php echo $row['ID']; ?>
RewriteRule ^product/([0-9]+)$ product.php?id=$1 [QSA,L]
答案 1 :(得分:0)
只需在你的.htaccess中使用它:
Options +FollowSymLinks
RewriteEngine on
RewriteRule product/id/(.*)/ product?id=$1
RewriteRule product/id/(.*) product?id=$1
这会将您的网址变为:
freehost.16mb.com/product/id/156
要拥有freehost.16mb.com/product/156,只需从RewriteRule中删除id /,所以它将是:
Options +FollowSymLinks
RewriteEngine on
RewriteRule product/(.*)/ product?id=$1
RewriteRule product/(.*) product?id=$1
---- ALTERNATIVE ----
RewriteCond %{QUERY_STRING} (^|&)id=156($|&)
RewriteRule ^freehost\.16mb\.com/product$ /freehost.16mb.com/product/156?&%{QUERY_STRING}