【问题标题】:Using mod_rewrite to substitute variable used in URL使用 mod_rewrite 替换 URL 中使用的变量
【发布时间】:2013-01-11 01:16:26
【问题描述】:

我已经解决了几个不同的问题,例如: 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

虽然我知道如何将这些 URL 更改为 domain.com/(a),但这并不能完全帮助我,因为变量 A 只是一个数字标识符,所以从 domain.com/script.php?products =1 to 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) 那就太棒了因为 domain/(d) 实际上是这个其他脚本的搜索页面,所以这是一个非常合乎逻辑的流程,可以真正简化浏览,并且可以让用户在搜索和产品之间直观地移动而无需太多工作。

我不知道这是否可能,但我们将不胜感激。

【问题讨论】:

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


    【解决方案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.com/search/blahblah

    【讨论】:

    • 主要原因很简单:我不是一个程序员,所以因为我已经使用htaccess来处理网站上的所有其他页面,旧的“如果你只有一把锤子” “方法出现了。你能告诉我在这种情况下如何使用 $_SERVER['REQUEST_URI'] 吗?
    • 好吧,让我试着举个例子,这是我用来确定给定路径的代码。 $path = explode('/', str_replace("?{$_SERVER['QUERY_STRING']}", '', $_SERVER['REQUEST_URI'])); 这为您提供了一个路径数组,例如,www.domain.com/search/blahblah/ $page[1] 将是 "search"$page[2] 将是 "blahblah"
    • 从那里您可以使用 if 语句来处理要加载的页面,当然如果他们请求的路径不是您处理的路径,只需使用 else 并给他们一个 404 页面: D
    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多