使用mod_rewrite替换URL中使用的变量

时间:2013-01-11 01:16:26

标签: php .htaccess url mod-rewrite url-rewriting

我经历了一些不同的问题,例如: Rewrite for all URLs

Can mod_rewrite convert any number of parameters with any names?

Creating dynamic URLs in htaccess

这帮助我将一组网址从domain.com/script2.php?d=1更改为domain.com/(d),但现在我遇到了一些我找不到答案的网址。目前,我有一组URL设置为: domain.com/script.php?a=1

虽然我知道如何将这些网址更改为domain.com/(a)但这对我来说并不是很有帮助,因为变量A只是一个数字标识符,所以来自domain.com/script.php?products = 1到domain.com/1对我没什么好处。

相反,它是变量B,实际上是描述符ProductName。所以我想要做的就是让它而不是domain.com/(a),我可以得到domain.com/(b)。有一个复杂的问题。原始设置使用变量A的原因是多个产品在变量B中使用相同的描述符,因此我还需要包含区分它们的变量C,所以我需要URL为domain.com/(b) - ( C)。

奖金!还记得我说过我有另一个脚本,我已经从domain.com/script2.php?d=1更改为domain.com/(d)了吗?好吧,如果我可以将我当前的脚本设置为不显示为domain.com/(b)-(c)而是作为domain.com/(d)/(b)-(c),那将是非常棒的。因为域/(d)实际上是这个其他脚本的搜索页面,所以它是一个非常合乎逻辑的流程,可以真正简化浏览,并且可以让用户直观地在搜索和产品之间移动而无需太多工作。

我不知道这是否可行,但任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

为什么不将所有内容重写回脚本文件?

RewriteEngine on
RewriteBase /

RewriteRule .* index.php [L]

将所有内容重写回index.php。从那里你可以解析PHP中的$_SERVER['REQUEST_URI']变量。从那里,您可以根据给定的URL确定要加载的页面。

如果您在上面的重写规则的同一目录中有任何其他文件夹,如果您不希望将它们重写回index.php,则可以将另一个.htaccess文件放在具有RewriteEngine Off的文件中。 。这就是css文件或站点图像所需要的。

使用此方法,您可以始终执行此类操作。 domain.com/products/1 或者,domain / search / blahblah