Недавно я узнал, как очистить свой 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 обладает большим сообществом разработчиков и обширной документацией.
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
.