Как перенаправить на целевую страницу при поиске доменного имени?

Недавно я узнал, как очистить свой URL-адрес, удалив «.php» или какой-либо другой пост и получив переменные в URL-адресе, и это хорошо. Но тогда у меня возникла проблема с целевой страницей. Всякий раз, когда я ввожу 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), она переносит меня на страницу со всем, что есть на ней. Пожалуйста, помогите мне с этим, если есть другой способ сделать это.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ router.php?url=$1 [L,QSA]

Похоже, вам просто нужно установить DirectoryIndex на router.php. (Команда DirectoryIndex устанавливает файл для обслуживания при запросе каталога.) Из-за второго условия (директива RewriteCond) ваше существующее правило mod_rewrite ничего не делает для запросов к корневому каталогу (или любому другому каталогу, если на то пошло). Вот почему многие фронт-контроллеры используют index.php, который является документом DirectoryIndex по умолчанию.

Например, вверху вашего файла .htaccess:

DirectoryIndex router.php

Вышеупомянутое приведет к тому, что router.php будет искаться в любом запрошенном каталоге. Итак, запросите рут, он будет искать router.php в корне. Вы можете изменить это на путь, относящийся к корневому каталогу, который он всегда будет обслуживать /router.php (из корневого каталога) для любого запрошенного каталога. то есть. DirectoryIndex /router.php.

Похоже, что ваш PHP-скрипт по умолчанию должен иметь значение index.

И это сработало! Я не знаю, почему я застреваю в таких простых местах. Большое спасибо :)

Junior 25.03.2024 00:13

Другие вопросы по теме