【问题标题】:PHP 7.1 routing problemsPHP 7.1 路由问题
【发布时间】:2018-03-15 00:33:08
【问题描述】:

我是 apache2 和 php 的新手,因为几天以来我试图找出我的代码或服务器配置有什么问题。 当我运行一条简单的线路时,例如:

$uri = $_REQUEST['URI'];
echo("$uri");

我收到一个错误:

Notice: Undefined index: URI in /var/www/html/...

我需要 $_REQUEST['U​​RI'] 来构建我自己的路由器。 文件 .htaccess 已添加到项目中,因此 apache 应该知道我将覆盖路由。顺便说一句,它看起来像:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [NC,L]

当然,我是从网络浏览器运行脚本的,所以应该定义 $_REQUEST['U​​RI']。 问题出现在: PHP 7.1 + Apache2.4 + Ubuntu16.04

有人可以帮忙吗?

【问题讨论】:

  • URI 是一个查询字符串变量,对吧?即example.com/?URI=something。无论如何,我几乎可以肯定你想用它作为重写规则:RewriteRule ^(.*)$ index.php?URI=%{REQUEST_URI} [NC,QSA,L]
  • 它不起作用。目的是在有人在浏览器中键入时获得正确的 URL,即 example.com/index 或 example.com/first_subpage,因此 $_REQUEST['U​​RI'] 应该返回:example.com/index 或 example.com/first_subpage 取决于用户将键入的 URL。这是最简单的网页路由案例。您重写的规则是指通过 URL 传递参数,这不是我尝试做的。

标签: php .htaccess configuration ubuntu-16.04 apache2.4


【解决方案1】:

在你的 .htaccess 文件中添加这个

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

然后在您的主 index.php 文件中将 url 捕获为

<?php echo $_GET['url']; ?>

所以如果用户打开像example.com/test 这样的页面 那么输出将是test

【讨论】:

  • 它也不起作用,结果与 Eduardo Escobar 和 Croises 之前给出的答案相同。我仍然收到信息:注意:未定义的索引:/var/www/html 中的 URI...
  • 它应该是 url 而不是 uri,尝试print($_GET); 看看请求中的内容
  • 我看到了依赖。 $_GET 参数命名错误。现在它起作用了!非常感谢兄弟:)
【解决方案2】:

正如@EduardoEscobar 所说,您要做的是:

$uri = $_SERVER['REQUEST_URI'];
echo("$uri");

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多