url重写并传递表单的值

时间:2014-10-09 18:55:52

标签: php .htaccess url url-rewriting seo

我在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中将整个花哨网址处理成简单的网页,

然后在页面脚本中使用这些变量。还有比这更好的解决方案吗?

1 个答案:

答案 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]