Modrewrite делает скрипты / CSS не отображаемыми из-за их местоположения - PullRequest
0 голосов
/ 01 мая 2011

У меня проблемы с этим правилом modrewrite, которое я применяю.

Работает как задумано, но при просмотре страницы ожидает абсолютный путь для всех моих скриптов / css / images. Так что они не будут отображаться, пока я не пройду по каждому из них отдельно и не добавлю к ним "../" (то есть 'icons / book.gif' => '../icons/book.gif')

Есть ли способ исправить это с помощью самого modrewrite? Вот правило, которое я применяю:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule  ^category/([A-Za-z\+]+)/?$ fact.php?category=$1
</IfModule>

РЕДАКТИРОВАТЬ: Эта функция будет определять абсолютный путь, который рекомендуется использовать для всех ссылок на сайте.

// determines and returns the absolute url path
function absolute_url ($page = "index.php") {
    $url = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);

    // remove trailing slashes
    $url = rtrim($url, '/\\');

    // add the page
    $url .= "/" . $page;

    return $url;

}

1 Ответ

1 голос
/ 01 мая 2011

Ваши правила такие:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule  ^category/([A-Za-z\+]+)/?$ fact.php?category=$1 [L,NC]

Это позволит избежать перезаписи существующих файлов (статических файлов, таких как css, js, images).

В качестве альтернативы вы можете использовать базовый тег HTML как для статических файлов:

<base href="http://www.example.com/static/" />

Однако рекомендуется всегда использовать абсолютный путь для статических файлов.

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