我想保护页面不受实际路径影响,所以我使用服务器uri变量来了解用户在导航栏中写的内容:
page.php文件
if ($_SERVER['REQUEST_URI'] == '/path/to/page.php') {
unset($_SERVER['REQUEST_URI']); // nothing will be displayed
} else // page content
它工作正常,但现在问题是?id = x或只是添加?将显示包含错误的页面。
有没有办法添加OR ==?....
我想阻止直接访问,因为我使用的路由器包含index.php中的那些页面,如:site.com/page和site.com/page?...
谢谢你!
编辑:添加更多信息:
的.htaccess
Options -Indexes
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
index.php中的路由器
// array whitelist for match
$includes = array(
'/home' => 'dir/to/home.php',
'/other' => 'dir/to/other/page.php'
);
if ($_SERVER['REQUEST_URI'] == '/')
$_SERVER['REQUEST_URI'] = '/home';
preg_match('/^([\w\/]+)/', $_SERVER['REQUEST_URI'], $matches);
$matches[1] = isset($matches[1]) ? $matches[1] : null;
if(array_key_exists($matches[1], $includes)) {
$content = include($includes[$matches[1]]);
} else $content = include('views/error.php');
return $content;
答案 0 :(得分:0)
我不知道我是否理解,但如果你这样做:
if (preg_match('\/path\/to\/page\.php', $_SERVER['REQUEST_URI'] ))