在htaccess/php中传递动态变量

Dav*_*vid 8 php .htaccess

我创建了一个动态的站点,并且信息(区域/类别/子类别)通过htaccess传递了很好的URL.例如,当用户潜入类别时,它按如下方式流动:

/parts/hard-drives

/parts/hard-drives/hard-drives-sas
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以在htaccess中扩展它,所以我可以传递更多项目并使用php获取变量,即:

/parts/hard-drives/hard-drives-sas/?manufacturer=dell&price=20
Run Code Online (Sandbox Code Playgroud)

我目前的htaccess文件行如下:

RewriteRule ^parts/([^/\.]+)/([^/\.]+)/?$ parts.php?p=$1&f=$2 [L]
RewriteRule ^parts/([^/\.]+)/?$ parts.php?p=$1 [L]
RewriteRule ^parts parts.php [L]
Run Code Online (Sandbox Code Playgroud)

您将看到第一行与/products/hard-drives/hard-drives-sas第二行相关/products/hard-drives,然后只是一个零件页面/parts

希望这是有道理的!

谢谢.

Pet*_*ter 14

使用QSAflag传递GET变量:

RewriteRule ^parts/([^/\.]+)/([^/\.]+)/?$ parts.php?p=$1&f=$2 [L,QSA]
RewriteRule ^parts/([^/\.]+)/?$ parts.php?p=$1 [L,QSA]
RewriteRule ^parts parts.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)

文档:

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有查询字符串,并将其替换为新生成的查询字符串.使用[QSA]标志会导致组合查询字符串.

请考虑以下规则:

RewriteRule /pages/(.+) /page.php?page=$1 [QSA]

使用[QSA]标志,/ pages/123?one = 2的请求将映射到/page.php?page=123&one=two.如果没有[QSA]标志,相同的请求将映射到/page.php?page=123-也就是说,现有的查询字符串将被丢弃.

http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_qsa