我最近学会了如何通过删除“.php”或其他一些帖子来清理我的网址,并获取网址中的变量,这很好。但后来我的登陆页面遇到了问题。每当我输入网站的网址时,例如:https://example.com,它应该带我到https://example.com/index,这是本例中的登陆页面。我好像不太能理解。
我尝试更改我的 .htaccess 文件,但没有成功,.htaccess 中留下的代码就是这样:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ router.php?url=$1 [L,QSA]
在我的 router.php 文件中,我有一堆清理 url 的代码。
function split_url(){
$url = isset($_GET['url']) ? $_GET['url'] : "index";
$url = explode("/", filter_var(trim($url,"/"),FILTER_SANITIZE_URL));
return $url;
}
$root= $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['SERVER_NAME']. $_SERVER['PHP_SELF'];
$root = trim(str_replace("router.php","",$root), "/");
define("ROOT", $root . "/");
$URL = split_url();
if(file_exists($URL[0].".php")){
require($URL[0] . ".php");
}
else{
require("404.php");
}
问题是,当我搜索网站的网址(https://example.com)时,它会加载页面,但它是空的,只有当我搜索(https://example.com/index)时,它才需要我进入包含所有内容的页面。 如果有其他方法,请帮助我。
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ router.php?url=$1 [L,QSA]
看起来您只需将
DirectoryIndex
设置为 router.php
即可。 (DirectoryIndex
设置请求目录时要提供的文件。)现有的 mod_rewrite 指令不会对根目录(或与此相关的任何目录)的请求执行任何操作。这就是为什么许多前端控制器使用 index.php
,这是 default DirectoryIndex
文档。
例如,在
.htaccess
文件的顶部:
DirectoryIndex router.php
看起来您的 PHP 脚本应该默认为
index
。