Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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查询参数使用htaccess apache提供其他值_Php_Apache_.htaccess - Fatal编程技术网

Php url查询参数使用htaccess apache提供其他值

Php url查询参数使用htaccess apache提供其他值,php,apache,.htaccess,Php,Apache,.htaccess,我正在学习如何在.htaccess上重写url,有什么好书可以让我学习吗 我正在构建一个restfullwebservices,我正在处理漂亮的url 现在我在.htaccess文件中编写了以下语法,以实现其他URL RewriteRule ([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/([0-9a-zA-Z]) users.php?key=$1&format=$2&uid=$3 RewriteRule ([a-zA-Z0-9]+)/([a-zA-Z0-

我正在学习如何在.htaccess上重写url,有什么好书可以让我学习吗

我正在构建一个restfullwebservices,我正在处理漂亮的url

现在我在.htaccess文件中编写了以下语法,以实现其他URL

RewriteRule ([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/([0-9a-zA-Z]) users.php?key=$1&format=$2&uid=$3
RewriteRule ([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users users.php?key=$1&format=$2
例1 我尝试过的url和结果如下所述

e.g.    http://localhost/site/key/format/users/user_id


http://localhost/rest/r123/json/users/pGQqAMbVQAFx
test.php 例2 输出
除了apache文档之外,还有什么关于url重写的好书适合初学者吗

你的规则没有什么问题。以下是固定代码:

RewriteRule /([a-z0-9]+)/([a-z0-9]+)/users/([0-9a-z]+)/? users.php?key=$1&format=$2&uid=$3 [L,QSA,NC]
RewriteRule /([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/?$ users.php?key=$1&format=$2 [L,QSA,NC]
代码中的问题/修复:

  • users/
    之后,您有一个正则表达式:
    ([0-9a-zA-Z])
    ,它将匹配您可能指的单个字符
    ([0-9a-zA-Z]+)
  • 在每个重写规则之后,应该使用标志L(最后一个规则)、QSA(查询字符串附加)、NC(忽略大小写)
  • 考虑使用端锚点
    $
    ,以避免匹配不需要的URI
  • 在正则表达式的开头使用/以避免匹配不需要的URI
  • 您可以使用
    [A-Za-z0-9]
    代替
    [A-Za-z0-9]
    并使用
    NC
    标志,如上所述

  • 了解更多有关mod_重写标志的信息:

    您的规则几乎没有问题。以下是固定代码:

    RewriteRule /([a-z0-9]+)/([a-z0-9]+)/users/([0-9a-z]+)/? users.php?key=$1&format=$2&uid=$3 [L,QSA,NC]
    RewriteRule /([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/?$ users.php?key=$1&format=$2 [L,QSA,NC]
    
    代码中的问题/修复:

  • users/
    之后,您有一个正则表达式:
    ([0-9a-zA-Z])
    ,它将匹配您可能指的单个字符
    ([0-9a-zA-Z]+)
  • 在每个重写规则之后,应该使用标志L(最后一个规则)、QSA(查询字符串附加)、NC(忽略大小写)
  • 考虑使用端锚点
    $
    ,以避免匹配不需要的URI
  • 在正则表达式的开头使用/以避免匹配不需要的URI
  • 您可以使用
    [A-Za-z0-9]
    代替
    [A-Za-z0-9]
    并使用
    NC
    标志,如上所述

  • 阅读有关mod_重写标志的更多信息:

    尝试过。。不工作PRO提示:不要为多个URL编写多个重写规则。为所有URL编写一条重写规则。然后使用PHP脚本进一步解析输入请求。顺便说一句,您的问题描述是有问题的。modrewrite没有“错误的值”这样的东西。该软件只是工作,它所做的是有案可查的。因此,在网站上99.9%的情况下,不是modrewrite出错,而是用户在不理解的情况下使用它。并且试着围绕apache文档进行思考(根据它编写自己的教程),它非常完整,应该是您的第一站。我只是想说,这就是我如何能够轻松地在多个服务器版本之间的更改中生存下来(好吧,这不是真的:),但它起了作用。我不会撒谎,我对为什么给出错误的值感到有点困惑。但在研究了URL重写之后,我可以推荐一些你可能会觉得有用的好网站和/或书籍。[这是一本有用的书,我在很多与Apache相关的搜索引擎优化中仍在使用。]()希望这些书中的一些有助于将来的参考,并且soembody能够帮助您实现这一点。。不工作PRO提示:不要为多个URL编写多个重写规则。为所有URL编写一条重写规则。然后使用PHP脚本进一步解析输入请求。顺便说一句,您的问题描述是有问题的。modrewrite没有“错误的值”这样的东西。该软件只是工作,它所做的是有案可查的。因此,在网站上99.9%的情况下,不是modrewrite出错,而是用户在不理解的情况下使用它。并且试着围绕apache文档进行思考(根据它编写自己的教程),它非常完整,应该是您的第一站。我只是想说,这就是我如何能够轻松地在多个服务器版本之间的更改中生存下来(好吧,这不是真的:),但它起了作用。我不会撒谎,我对为什么给出错误的值感到有点困惑。但在研究了URL重写之后,我可以推荐一些你可能会觉得有用的好网站和/或书籍。[这是一本有用的书,我仍在使用它进行大量与Apache相关的搜索引擎优化。]()希望其中的一些帮助可以供将来参考,soembody能够帮助您将其进行iFixing以便进行复制和粘贴,但这并没有教什么。你会为让其他用户保持沉默而感到自豪吗?@hakre,别误会我,伙计,我还在花时间列出修复它的所有原因。好吧,你一定有一些超能力,比如知道需要QSA。OP还写了一篇文章,他对Apache手册有问题,所以仅仅列出标志并不能告诉他太多。但我会在稍后回顾你的问题,这样如果我看到DV不再是那么简单,我就可以收回它。@hakre:
    好吧,你一定有一些超能力,
    你是如此资深的专业人士,那么,我可以知道这种语气的原因吗?我没有任何这样的能力,在OP的代码中发现了一些错误并修复了它,提供了修复它的理由。我看不出这有什么不对。旁观者眼中的对与错是如此之多,所以我们不应该对此做出太多判断。如果我的语气冒犯了你,请放心,我是出于好意而不是冒犯你的。我对你的回答,尤其是编辑,总体上是满意的。我刚刚对它进行了评论。修复它进行复制和粘贴并没有什么意义。你会为让其他用户保持沉默而感到自豪吗?@hakre,别误会我,伙计,我还在花时间列出修复它的所有原因。好吧,你一定有一些超能力,比如知道需要QSA。OP还写了一篇文章,他对Apache手册有问题,所以仅仅列出标志并不能告诉他太多。但我会在稍后回顾你的问题,这样如果我看到DV不再是那么简单,我就可以收回它。@hakre:
    好吧,你一定有一些超能力,
    你是如此资深的专业人士,那么,我可以知道这种语气的原因吗?我没有任何这样的能力,在OP的代码中发现了一些错误并修复了它,提供了修复它的理由。我看不出这里面有什么不对的。错与对在旁观者的眼里是如此之多,所以我们
    http://localhost/rest/r123/json/users/
    
    Array
    (
        [key] => r123
        [format] => json
    )
    
    RewriteRule /([a-z0-9]+)/([a-z0-9]+)/users/([0-9a-z]+)/? users.php?key=$1&format=$2&uid=$3 [L,QSA,NC]
    RewriteRule /([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/users/?$ users.php?key=$1&format=$2 [L,QSA,NC]