Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用mod_rewrite替换URL中使用的变量_Php_.htaccess_Url_Mod Rewrite_Url Rewriting - Fatal编程技术网

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

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对我没有多大好处 相

我遇到了一些不同的问题,比如:

这帮助我将一组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)实际上是另一个脚本的搜索页面,因此它是一个真正合乎逻辑的流程,并且会简化浏览,用户可以直观地在搜索和产品之间移动,而无需做很多工作


我不知道这是否可行,但如果有任何帮助,我将不胜感激。

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

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