RewriteRule меняет физические пути для файлов - PullRequest
0 голосов
/ 21 апреля 2011

Допустим, доменом для моего сайта является [http://mywebsite.com][1]], и открывается index.php.Этот скрипт получает переменные $ page, $ section, $ language из URL.Поэтому [http://mywebsite.com/index.php?lang=en&section=home&page=sitemap][2] открывает страницу карты сайта на английском языке, которая принадлежит разделу «home».И я хочу, чтобы тот же URL был переписан на [http://mywebsite.com/home/sitemap_en.html][3].. Для этого я уже поместил в .htaccess следующее: RewriteCond %{REQUEST_URI} .+\/.+ RewriteRule ^(.+)\/(.+)_(mk|en|al)\.html$ index.php?lang=$3&section=$1&page=$2 [L] Но сейчас есть огромная проблема.Когда я захожу на такой URL, файлы не обнаруживаются, потому что файл style.css находится в корневой папке, а не в [http://mywebsite.com/home/style.css][4], и там его ищет сервер.«home» - это не настоящая папка, и она не существует, это всего лишь раздел.То же самое относится ко всем jpg, png, js, gif и т. Д. Как я могу перенаправить страницы так, как мне нравится, и файлы, которые можно найти с реальными путями?

ps Некоторые разделы, такие как [http://mywebsite.com/index.php?lang=en&section=contact][5] нет страниц вообще.Они должны быть получены следующим образом: [http://mywebsite.com/contact_en.html][6] У меня есть это для них, после предыдущего правила: RewriteRule ^ (. +) _ (Mk | en | al) .html $ index.php? Lang = $ 2§ion = $ 1

Ответы [ 2 ]

2 голосов
/ 21 апреля 2011

Вы можете использовать тег base в своем заголовке, чтобы все относительные пути были вне определенного href, поэтому:

<head>
    <base href="http://mywebsite.com/" />
</head>

приведет к всем относительным (не только CSS) URL-адреса для загрузки из вашего корневого каталога

ИЛИ

, как утверждают другие, просто делают ваши пути абсолютными, помещая перед собой "/" впереди:

<link rel="stylesheet" href="/css/mycss.css" type="text/css" />
0 голосов
/ 21 апреля 2011

Пытались ли вы сделать ссылки на файлы css, js и т. Д. Относительно каталога верхнего уровня (домашнего каталога), поставив перед ним косую черту?т.е. если вы храните их в каталоге с именем styles в домашнем каталоге sites:

<link rel=StyleSheet href="/styles/style.css" type="text/css" />
...