2

我是 htaccess 重定向的新手,我在它的工作原理上遇到了一些麻烦,我认为这是因为我需要一些不同的东西。

我要这个

http://localhost/webroot/type_enduro-cross-trial/brand_yamaha/

被重定向到

http://localhost/webroot/search.php?type=enduro-cross&trial=brand_yamaha 

我将这些值用作产品的过滤器;但原始 URL 是分两步生成的。

例子:

用户转到主页 ( http://localhost/webroot),并希望按类型进行过滤,因此当他单击时,应用过滤器并且 URL 更改为http://localhost/webroot/type_enduro-cross-trial并且可以正常工作!

但我希望用户能够添加更多过滤器,所以现在他想按某个品牌进行过滤,当他点击 URL 时会变为http://localhost/webroot/type_enduro-cross-trial/brand_yamaha/. 等等更多的过滤器。

此重写规则用于获取第一个参数的值:

RewriteRule ^([^_/]+)_([^_/]+)/([^_/]*) search.php?$1=$2 [L]

但是当我添加更多过滤器时,它显然会忽略它们,我不知道重写规则应该如何。

谢谢,对不起我的英语!

4

1 回答 1

1

您想要实现的目标与.htaccess. 而不是解决这个复杂的问题,.htaccess只需在文件中留下一条规则并在search.php脚本中完成工作。这使您具有更大的灵活性。

只需将所有内容作为单个参数传递给 php 脚本,例如:

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

在您的 php 脚本中,您对$_GET['page'](以上面的示例 RewriteRule 为例)进行一些字符串处理,例如使用explode.

.htaccess在 PHP 中,您可以更好地使用数组,而在文件中您根本无法做到这一点。

示例取自原始 Apache HTTP Mod_Rewrite 文档

于 2012-12-13T15:46:47.683 回答