Php 使用mod_rewrite替换URL中使用的变量
我遇到了一些不同的问题,比如: 这帮助我将一组URL从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更改为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 使用mod_rewrite替换URL中使用的变量,php,.htaccess,url,mod-rewrite,url-rewriting,Php,.htaccess,Url,Mod Rewrite,Url Rewriting,我遇到了一些不同的问题,比如: 这帮助我将一组URL从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更改为domain.com/1对我没有多大好处 相
我不知道这是否可行,但如果有任何帮助,我将不胜感激。为什么不将所有内容重写回脚本文件
RewriteEngine on
RewriteBase /
RewriteRule .* index.php [L]
将所有内容重写回index.php。从这里可以解析PHP中的$\u服务器['REQUEST\u URI']
变量。从那里,您可以根据给定的url决定加载哪个页面
如果在上述重写规则的同一目录中有任何其他文件夹,如果不希望将它们重写回index.php,可以将另一个.htaccess文件放在那些关闭了RewriteEngine
的文件夹中。这就是css文件或站点图像所需要的
使用这种方法,您总是可以做类似的事情。
domain.com/products/1
或者,domain.com/search/blahblah主要原因很简单:我不是一个程序员,所以因为我使用htaccess来处理网站上的所有其他页面,所以出现了旧的“如果你只有一把锤子”方法。你能告诉我在这种情况下$\u服务器['REQUEST\u URI']将如何使用吗?好的,这里让我试着给出一个例子,这是我用来确定给定路径的代码<代码>$path=explode('/',str_replace(“?{$\u SERVER['QUERY_STRING']},'',$\u SERVER['REQUEST_URI'])这将为您提供一个路径数组,因此,例如,www.domain.com/search/blahblah/
$page[1]
将是“search”
,$page[2]
将是“blahblah”
,从那里您可以使用if语句来处理要加载的页面,当然,如果它们请求的路径不是您要处理的路径,只需使用else,并给他们一个404页:D