我最近学会了如何清理我的URL,删除". php"或其他帖子,并在URL中获取变量,这很好.但我的着陆页有问题.每当我输入我的网站的网址说例如: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的代码. <?PHP

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");
}

问题是,当我搜索我的网站的url(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设置文件在请求目录时服务.由于第二个condition(RewriteCond指令),您现有的mod_rewrite规则对根目录(或任何目录)的请求没有任何作用.这就是为什么许多前端控制器使用index.php,这是default DirectoryIndex文档.

例如,在.htaccess文件的顶部:

DirectoryIndex router.php

以上操作将导致在所请求的任何目录中查找router.php.因此,请求根,它将在根中查找router.php.您可以将其更改为根相对路径,对于所请求的任何目录,它将始终为/router.php(从根目录)提供服务.也就是说.DirectoryIndex /router.php.

看起来您的PHP脚本应该默认为index.

Php相关问答推荐

在AJX请求中使用简写后,FormData出现非法调用错误

如何在数据库中添加注册表单中的动态新行?

添加自定义Metabox到WooCommerce管理订单,启用HPOS

如何让PHP变量跨越多个脚本调用?

使用PHP和WebSockets或SSE实现实时通知

在WooCommerce中禁用客户用户角色的纳税计算

在Laravel Eloquent中实现一对多关系

laravel中获取的数据会自动更改时间戳值

首先在WooCommerce我的帐户订单页面中移动操作按钮

文件::Files()响应返回空对象数组

文本到语音:不考虑音高值

用ajax获取文件 - CORS问题&;设置缓存?

未检测到laravel控制器

Wordpress,配置一周第一天选项

基于WooCommerce中的产品变体自定义感谢页面跳转

在 Botiga 主题模板中添加复选框到政策行.Woocommerce

Woocommerce单个添加到购物车页面中的产品动态定价

如何在 Laravel 中修改嵌套数组的键?

适当的时区处理 Laravel / Carbon

用于多态服务的 Symfony setter 注入