【问题标题】:how to post parameters in URL without key如何在没有密钥的情况下在 URL 中发布参数
【发布时间】:2016-12-01 02:10:11
【问题描述】:

我正在用 PHP 创建一个网站。我想为我的用户创建个人资料页面。我可以这样做:

http://stackoverflow.com/users.php?uid=5272693&uname=fullofquestion

但我想删除 .php 扩展名和参数键并这样做:

http://stackoverflow.com/users/5272693/fullofquestion

我该怎么做?

【问题讨论】:

  • 你在谈论 URL 重写和休息调用,使用 .htaccess 和任何休息框架
  • 你会想看看 URL 重写
  • 请给我一些示例代码。
  • @Satya 这不是专门针对rest的,任何PHP脚本都可以使用$_SERVER['PATH_INFO'];

标签: php .htaccess server web


【解决方案1】:

首先您需要创建.htaccess 文件以将users 重定向到users.php

RewriteEngine On
RewriteRule ^/?users/(.+)$ users.php [L]

然后在users.php 中,您可以使用$_SERVER['PATH_INFO'] 访问URL 的/5272693/fullofquestion 部分。

【讨论】:

  • ps。我不太擅长 RewriteRule:s,所以如果这不起作用,请尝试使用像 .../users.php/5272693/fullofquestion 这样的路径。如果这有效但.../users/... 无效,那么这个 RewriteRule 是错误的。在这两种情况下,您都可以使用$_SERVER['PATH_INFO']
  • 这样,我应该为每个url写一个规则。并且用户可以使用 .php 访问链接。
  • @fullOfQuestion “对于每个网址”是什么意思?您还需要哪些其他 URL?
  • 其他页面,如 home.php。我解决了这个问题,但我怎样才能访问 .php 文件?
  • @fullOfQuestion 你能用服务器配置文件代替.htaccess吗?在那里您可以使用完整的文件系统路径而不是users.php,因此可以使用文档根目录之外的文件。如果没有,这里的 cmets 有一些例子,但我不太明白它们是如何工作的:php.net/manual/en/security.hiding.php
【解决方案2】:

在您的根目录中创建一个名为.htaccess 的文件并添加以下行:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^users/(.*)/(.*)$ /users.php?uid=$1&uname=$2 [L]
</IfModule>

这应该可以解决问题。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2014-02-20
    相关资源
    最近更新 更多