我想知道是否可以强制用户仅从主页访问我的网站。
例如,如果用户输入地址mysite.com/subdirectory(有效目录),我希望将它们重定向到mysite.com/index.html。从那里可以使用主页上的超链接导航到/子目录。
提前致谢!
答案 0 :(得分:0)
您可以使用主页中定义的$ _SESSION变量,并检查网站的其他部分(如果已定义)。如果它没有重定向到您的主页。
例如,您的主页可能是:
session_start();
if (!isset($_SESSION['homepage']){
$_SESSION['homepage'] = true;
}
// Your homepage code
并且任何其他页面都应该以:
开头session_start():
if(!isset($_SESSION['homepage'] || $_SESSION['homepage'] != true){
header("Location: index.php");
}
无论如何,我无法理解为什么你会这样做,我认为这应该是一种正确的方式来做你想做的事情,而不是强迫用户这样做。
答案 1 :(得分:0)
一种方法是要求POST请求访问每个子页面。如果用户直接访问该页面,则它将是GET请求。在您的主页上,为每个链接执行以下操作:
<form method=post action="/subdirectory">
<input type=submit value="My stuff">
</form>
(如果需要,您可以使用客户端JavaScript将这些按钮重新用于激活表单的链接。)
然后在每个子页面上:
<?php
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
header('Location: /');
die();
}
答案 2 :(得分:0)
由于您要做的就是确保您的用户看到一些广告,并且您当前正在使用标准的Apache目录列表,我只需替换PHP脚本(在每个子目录中为index.php
)以类似的方式列出文件,但在HTML页面中,您可以使用广告进行自定义。或许,在这些方面,我已经改编this answer并将其包装在网页中:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Download Page Example</title>
</head>
<body>
<h1>Download Page Example</h1>
<p>Here's some advertising.</p>
<ul class="file-list">
<?php
// Iterate all files in this directory
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
$filename = $fileinfo->getFilename();
// If it's not a hidden "dot file"
if (!fnmatch('.*', $filename)) {
// And put it on the list as a link, encoding the
// filename as a url path safely in the achor attribute
// and as HTML in the text.
echo '<li><a href="' . rawurlencode($filename) . '">' . htmlentities($filename) . '</a></li>';
}
}
?>
</ul>
</body>
</html>
答案 3 :(得分:-2)
你应该可以使用apache的mod_rewrite
来做到这一点<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
将它放在主目录中的.htaccess文件中