提前感谢您提供的任何帮助。
问题出在标题中。为了解释,我将扩展如下:
当我转到example.com/my/
(我的是一个目录,其中有index.html
个文件)
该网址应保持example.com/my/
。
而且,当我转到example.com/my/anotherfile.php
时,网址也应该保留example.com/my/
。
额外注意: 重定向至/anotherfile.php
是通过表单:<form action="anotherfile.php"></form>
,因此在有人检查之前不会显示源。
修改
由于有些人无法理解我的意思,这里有不同的解释:
我希望人们浏览我的整个网站example.com
,但网址应保持example.com
而我需要通过.htaccess而不是通过iframe(无法解释原因)
答案 0 :(得分:1)
简短的回答是,这是不可能的。
使多个文档具有相同URL的外观的唯一方法是加载实际具有该URL的文档,然后修改用户看到的内容(例如,通过在框架中加载不同的文档,或使用JavaScript进行修改内容)。
您无法使用.htaccess
,因为.htaccess
只是配置服务器的一种方法。
当浏览器显示&#34;请给我/my/
&#34;然后服务器必须回应一些东西。它必须继续/my/
所以它无法知道它是否应该返回运行index.php
或anotherfile.php
的结果。
答案 1 :(得分:1)
要通过单个网址管理整个网站,最简单的方法就是将单个网页index.php
和其他文件中包含的内容加载为包含,当用户浏览网站时通过加载新内容的index.php
或$_POST
返回$_SESSION
的变量,最佳做法是使用include
来保持代码整洁。
在此示例中,我们将通过$_GET
发送变量,然后使用存储在$_SESSION
变量中的变量重新加载内容。
链接看起来像这样:
<a href="?page=about">About</a>
然后会触发页面顶部的条件并加载该页面。
<?php
session_start();
if (isset($_GET['page'])) {
$_SESSION['page'] = $_GET['page'];
//This redirect removes the $_GET string so you are keeping the user on the same URL.
header("Location: http://example.com/my/");
}
if (isset($_SESSION['page'])) {
include($_SESSION['page'] . '.php');
} else {
//Show home page content.
}
您可以使用JS简化此过程,但这是一个纯PHP方法的示例。
请记住,这会对您的搜索引擎优化产生一些负面影响 - 尽管$_GET
变量意味着搜索引擎可能能够正确地抓取您的网站,但最终用户会感到困惑。只有在真的非常必须有一个前置URL时才使用此功能。