Проблема перезаписи Nginx - PullRequest
       4

Проблема перезаписи Nginx

2 голосов
/ 02 февраля 2011

Каждая запрашиваемая страница передается в "check.php":

rewrite ^/(.*)$ http://localhost/check.php?page=$1

"check.php" проверяет несколько параметров безопасности, а затем запрашивает запрашиваемую страницу:

<?php
    // ... security stuff

    require_once ($myRequestedPage);
?>

Проблема в том, что в файле HTML не загружается любой внешний стиль, только сценарии:

<!doctype html>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- Do not load -->

        <link href="css.css" rel="stylesheet" type="text/css" /> <!-- Do not load -->

        <script src="js.js"></script> <!-- Load -->

        <style>
            @import url("css.css"); <!-- Do not load -->
        </style>

        <title></title>
    </head>

    <body></body>
</html>

Есть какие-нибудь подсказки? Благодаря.

Ответы [ 4 ]

2 голосов
/ 09 февраля 2011

Я рекомендую вам ТОЛЬКО направлять запросы для файлов, которые не существуют, к check.php. Это предотвращает переписывание запросов "style.css" в check.php, что в настоящее время и происходит. ВСЕ отправляется на check.php (даже ваши таблицы стилей).

# Route all requests for non-existent files to index.php
if (!-e $request_filename) {
        rewrite ^/(.*)$ /check.php/$1 last;
}

# Pass PHP scripts to php-fastcgi listening on port 9000
location ~ \.php {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
}
2 голосов
/ 05 февраля 2011

В настоящее время вы заботитесь о том, чтобы вручную установить конкретный тип mime для каждого переписанного файла с помощью команды PHP header? Типы MIME различаются для файлов JavaScript, CSS и HTML. Одно это может привести к проблемам.

1 голос
/ 05 февраля 2011

Я предлагаю Firebug:

http://getfirebug.com/

Таким образом, вы можете проверить, что видит браузер, и попытаться найти, в чем проблема, которая может быть связана с путями (какКайл упоминает), или заголовки (это не текстовые / CSS-заголовки, отправляемые из-за перезаписи), или какая-то другая проблема.

Проверяя, что было загружено, вы можете использовать вкладку CSS, а затем просмотреть каждыйфайлы, которые вы ожидали скачать.Если ваш браузер не смог получить файл, вы увидите ошибку.См. all.css часть этого снимка экрана:

Firebug CSS tab

Затем вы можете проверить вкладку Net и посмотреть заголовки / ответы для файлов css., чтобы увидеть, что было возвращено, как показано на скриншоте ниже (попробуйте заголовки, чтобы увидеть, является ли текст / css типа содержимого правильным:

Firebug Net CSS Response tab

Вот заголовок содержимого-выделенный тип:

Content-type text/css

0 голосов
/ 05 февраля 2011

Попробуйте добавить / перед ссылкой CSS:

<link href="/css.css" rel="stylesheet" type="text/css" />

Если это не сработает, попробуйте:

<link href="../css.css" rel="stylesheet" type="text/css" />

Кажется тривиальным, но эти вещи вызывали у меня похожие проблемы:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...