.htaccess не работает с файлами CSS

1

У меня есть файл .htaccess с этими правилами:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

У меня также есть файл Router.php:

<?php

class Router
{
    function __construct()
    {
        print_r($_GET);
        $this->request = $_GET['url'];
        $this->request = rtrim($this->request, "/");
        $this->params = explode("/", $this->request);
        print_r($this->params);
        $this->controller = $this->params[0];
        if ($this->controller == "index.php")
            $this->controller = "Index";
        $this->controller = ucfirst($this->controller);
        $file = 'controllers/' . $this->controller . '.php';

        if (file_exists($file)) {
            require_once $file;
            $this->connection = new $this->controller($this->params);
        } else {
            $file = 'controllers/PageNotFound.php';
            $this->controller = "PageNotFound";
            require_once $file;
            $this->connection = new $this->controller();
        }
    }
}

и header.php

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="utf-8">
    <link href="/style.css" rel="stylesheet" type="text/css">
    <title>System stypendialny</title>
</head>
<body>

У меня проблема с файлом .htaccess. Когда я использую эту версию файла, и я пытаюсь использовать этот http://localhost/academhip_system/ URL в браузере, я вижу это:

Array() Примечание: Неопределенный индекс: url в C:\xampp\htdocs\academhip_system\libs\Router.php в строке 8 Массив ([0] =>)

Но когда я RewriteCond %{REQUEST_FILENAME} !-f эту строку (RewriteCond %{REQUEST_FILENAME} !-f), тогда файл CSS не загружается.

  • 0
    $_GET['url] существует только в том случае, если файл, к которому вы пытаетесь получить доступ, отсутствует (именно тогда запускается RewriteRule). Если папка /scholarship_system/ существует и в этой папке есть index.php , она сразу же будет использовать ее без перезаписи.
  • 0
    Это верно, но если я удалю строку RewriteCond% {REQUEST_FILENAME}! -F, я получу это в массиве $ _GET ([url] => index.php)
Показать ещё 1 комментарий
Теги:
.htaccess
mod-rewrite

1 ответ

0
Лучший ответ

Вы можете сохранить свой.htaccess как есть. Если вы удалите условие -f, маршрутизатор должен будет обрабатывать все запросы к css, изображениям и javascript -f, а также, и это просто боль.

Вместо этого установите контроллер по умолчанию в свой Router-класс:

$this->request = isset($_GET['url'])? $_GET['url] : 'default';

то вам просто нужно создать файловые controllers/default.php которые будут использоваться, если $_GET['url] не установлен.

  • 0
    Спасибо Большое. Оно работает.
  • 0
    Хорошо. Когда я пишу этот localhost / scholarship_system или localhost / scholarship_system / index, все в порядке. Но когда я пишу этот localhost / scholarship_system / index или localhost / scholarship_system / hello / hey, файл css не прикрепляется.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню