Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 使用参数重写自定义URL_Php_.htaccess - Fatal编程技术网

Php 使用参数重写自定义URL

Php 使用参数重写自定义URL,php,.htaccess,Php,.htaccess,我想要下面的结果 localhost/sdpisdtv2014/play/show.php?cat=rc&id=573 我的.htaccess代码是(但不工作) 模式_rewrite已启用,并且还检查了网站重定向,它立即就可以正常工作,我可以看到您想要的结果缺少“cat”参数。我注意到的另一件事是,*通常是贪婪的量词:它会消耗所有东西,所以后面的任何东西都不会匹配。我不记得Apache的regex风格到底做了什么,但我想您需要限定字符以匹配,或者让量词不情愿。第一种方式可能如下所示:

我想要下面的结果

localhost/sdpisdtv2014/play/show.php?cat=rc&id=573
我的
.htaccess
代码是(但不工作)


模式_rewrite已启用,并且还检查了网站重定向,它立即就可以正常工作,我可以看到您想要的结果缺少“cat”参数。我注意到的另一件事是,
*
通常是贪婪的量词:它会消耗所有东西,所以后面的任何东西都不会匹配。我不记得Apache的regex风格到底做了什么,但我想您需要限定字符以匹配,或者让量词不情愿。第一种方式可能如下所示:

Options +FollowSymLinks
RewriteEngine on
RewriteRule show/cat/(.*)/id/(.*)/ show.php?cat=$1&id=$2
RewriteRule show/cat/(.*)/id/(.*) show.php?cat=$1&id=$2
第二个看起来像:

RewriteRule show/cat/([^\/]*)/id/([^\/]*)/ show.php?cat=$1&id=$2

但是,我希望您意识到您提供的URL,
localhost/sdpisdtv2014/play/show/rc/573
,与此模式不匹配:它缺少
“cat”
“id”
字符串。要使其匹配,您需要以下内容:

RewriteRule show/cat/(.*?)/id/(.*?)/ show.php?cat=$1&id=$2
localhost/sdpisdtv2014/play/show/cat/rc/id/573/
另外,锚定重写规则通常是一个好主意,这样它们就不会意外应用。比如:

RewriteRule show/cat/(.*?)/id/(.*?)/ show.php?cat=$1&id=$2
localhost/sdpisdtv2014/play/show/cat/rc/id/573/
(假设
“localhost”
是域名,而不是路径的一部分)


这应该行得通

您需要提供更多信息,以便我们为您提供有用的答案。你说它不起作用,但你看到的是什么行为?当你说“想要下面的结果”时,你的意思是这是你希望访问者输入的URL,或者这是你希望它被重写的URL?localhost/sdpisdtv2014/play/show.php?cat=rc&id=573这是动态URL(实际URL),我想将这类URL重定向到下面的URL。localhost/sdpisdtv2014/play/show/rc/573Ok。不过,你实际上是在倒退术语。用户输入的URL是被“重定向”的内容,或者在本例中实际上只是被重写。一种明确的说法是,您希望对
localhost/sdpisdtv2014/play/show/rc/573
的请求由
localhost/sdpisdtv2014/play/show.php?cat=rc&id=573
保留。希望使用此localhost/sdpisdtv2014/play/show/rc/573而不是localhost/sdpisdpisdtv2014/play/show.php?cat=rc&id=573(这是实际的URl)不知道该怎么做。我想在自定义PHP站点中这样做调试重写规则最简单的方法是打开日志记录。例如,在httpd版本2.2中,您可以使用
RewriteLog
RewriteLogLevel
指令来设置重写引擎的调试日志记录。有关更多信息,请参阅。如果仍无法使其正常工作,则需要提供更多详细信息。想象一下,如果我走近你说“我的车坏了,我怎么修理它?”即使你知道所有关于汽车的知识,这也不会给你任何关于可能出问题的信息。这基本上就是你让我们处于的位置。如果您需要帮助,您需要告诉我们:您尝试访问的URL是什么,提供的结果是什么,您的服务器日志说了什么,重写日志说了什么,.htaccess文件在哪里?你提供的信息越多,就越有可能有人能帮助你。从一开始我就知道:这也行不通
RewriteEngine On
RewriteRule show/cat/([^/]*)/([^/]*)$ show.php?cat=$1&id=$2