加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 通过.htaccess将$_GET变量传递给虚拟目录

发布时间:2020-12-13 16:19:05 所属栏目:PHP教程 来源:网络整理
导读:我有以下.htaccess重写规则,它适用于将虚拟目录转换为参数,例如: www.example.com/usa/ny/nyc由PHP解释为www.example.com/index.php?path=usa/ny/nyc. 我似乎无法弄清楚我将如何更改下面的正则表达式来处理虚拟目录本身的参数.例如,我想: www.example.com/
我有以下.htaccess重写规则,它适用于将虚拟目录转换为参数,例如:

www.example.com/usa/ny/nyc由PHP解释为www.example.com/index.php?path=usa/ny/nyc.

我似乎无法弄清楚我将如何更改下面的正则表达式来处理虚拟目录本身的参数.例如,我想:

www.example.com/usa/ny/nyc/?display=offu0026amp;settings=没有被PHP看作www.example.com/index.php?path=usa/ny/nycu0026amp;param=display:off,设置:无.

让它变得特别棘手的是参数并不总是我在上面的例子中使用的那两个选项,它们会动态地改变.有关如何完成此任务的任何想法或建议?

RewriteRule ^/?([a-zA-Z_-/]+)$index.php?path=$1 [L]

解决方法

假设您想要未经修改地传递查询字符串,可以使用[QSA](查询字符串追加)选项,如下所示:

RewriteRule /(.+)$/index.php?path=$1 [L,QSA]

您可以找到QSA选项here的文档.从文档中:

With the [QSA] flag,a request for /pages/123?one=two will be mapped
to /page.php?page=123&one=two. Without the [QSA] flag,that same
request will be mapped to /page.php?page=123 – that is,the existing
query string will be discarded.

因此,您的PHP脚本将所有参数视为标准_ $_ GET参数,而不是需要进行任何其他修改.

如果您希望将结果更像是典型的路径元素,则可以使用以下内容:

RewriteRule /(.+)$/index.php/$1 [L,QSA]

在上面的例子中,您的查询字符串仍将被追加,但是您需要使用$_SERVER [‘PATH_INFO’]显式处理该路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读