你可以看到,如果请求URI以字符串 '/分类/' 开头:
<?php
$request_uri = '/categories/foo';
if (strpos($request_uri, '/categories/') === 0)
{
include 'your.html';
}
替代的$ REQUEST_URI以上$_SERVER['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;
}
您可能需要确切的字符串 '/类别/' 不匹配,如果这样你可以调整条件:
if(
strpos($request_uri, '/categories/') === 0
&& $request_uri !== '/categories/'
) {}
我不确定你的服务器环境,但是如果你使用Apache并且启用了重写模块,你可以这样做。 – Progrock
抱歉忘了提及它。它运行在nginx上。 我提供的代码确实工作完美,但只在/类别和不/类别/ AnythingElse。 – razz
您可以在nginx下使用重写规则:https://www.nginx.com/blog/creating-nginx-rewrite-rules/ – Progrock