我在php中拥有电子商务网站。现在转向花哨的网址,网址重写。
因为我也有可变长度的参数和可选变量。
例如,
http://example.com/product.php?page=e&id=23&color=blue&size=xxl&width=200&height=100
此处,参数是可选的。这意味着,某些变量可能会或可能不会参与除id
之外的网址。
此处,page=e
已修复且不是动态的。 (背后的原因是我有其他重写规则,如^categories
,^toys
等。
并且重写的网址应该是其中之一,
http://example.com/e/23/color-blue/size-xxl/
http://example.com/e/26/color-black/width-500/height-900/
http://example.com/e/56/type-shirt/color-white/height-345/size-xl/
我在下面试过没有运气,
RewriteRule ^e/([^/.]+)/?$ product.php?page=e&url=$1 [L,NC,QSA]
我得到了所有$_GET
这样的值,
http://example.com/product.php?page=e&id=23&color=blue&size=xxl&width=200&height=100
但我正试图达到这样的目的,
http://example.com/e/23/color-blue/size-xxl/width-200/height-100
如何使用斜杠而非&
传递查询。
上面最后一个网址背后的主要思想是在php中将整个花哨网址处理成简单的网页,
然后在页面脚本中使用这些变量。还有比这更好的解决方案吗?
答案 0 :(得分:0)
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此代码:
RewriteEngine On
RewriteBase /
RewriteRule ^(e)/([0-9]+)/([^-]+)-([^/]*)(/.*)?$ product.php$5?page=$1&id=$2&$3=$4 [L,QSA]
RewriteRule ^(product\.php)/([^-]+)-([^/]*)(/.*)?$ $1$4?$2=$3 [L,QSA]