服务器请求uri页面和相关页面

时间:2016-09-13 22:00:50

标签: php

我差不多找到了在某些页面上显示.html文件的方法。

在这种情况下,我希望test.html显示在http://www.example.com/categories/AnyPageThatExcistsInCategories

我发现以下代码适用于/ categories。 <?php if ($_SERVER['REQUEST_URI'] == '/categories/') { include 'test.html';} ?>

我只需要关于如何获得它的黄金提示也可以在/ categories / ThisCanBeAnything和类别/ ThisCanBeAnything / AndThisAlso等页面上工作 server config是nginx。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以查看请求uri是否以字符串&#39; / categories /&#39;开头:

<?php

$request_uri = '/categories/foo';

if (strpos($request_uri, '/categories/') === 0 )
{
    include 'your.html';
}

$_SERVER['request_uri']替换$ request_uri的值。假设你在前端控制器中有这个逻辑。

此外:

<?php

$request_uris = [
    '/categories/foo',
    '/categories/',
    '/categories',
    '/bar'
];

function is_category_path($request_uri) {
    $match = false;
    if (strpos($request_uri, '/categories/') === 0 )
    {
        $match =  true;
    }

    return $match;
}

foreach ($request_uris as $request_uri) {
    printf(
        "%s does%s match a category path.\n",
        $request_uri,
        is_category_path($request_uri) ? '' : ' not'
    );
}

输出:

/categories/foo does match a category path.
/categories/ does match a category path.
/categories does not match a category path.
/bar does not match a category path.

使用中:

if(is_category_path($_SERVER['REQUEST_URI'])) {
    include 'your.html';
    exit;
}

您可能希望不匹配确切的字符串&#39; / categories /&#39;,如果是这样,您可以调整条件:

if(
    strpos($request_uri, '/categories/') === 0
    &&                      $request_uri !== '/categories/'
) {}

答案 1 :(得分:0)

Progrock的例子可以正常工作,但这是使用正则表达式匹配而不是strpos的另一个例子,以防你好奇!

<?php
if (preg_match("/\/categories\/.*/", $_SERVER['REQUEST_URI'])) {
    include 'test.html';
}
?>