mod_rewrite и пути к файлам - PullRequest
       26

mod_rewrite и пути к файлам

0 голосов
/ 01 сентября 2011

Я использую mod_rewrite в моем haccess для создания чистых URL.Рабочий каталог webroot/subdir, а htaccess находится в subdir

То, что у меня хорошо работает для основной папки

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^projects/([0-9]+)$ ?action=projects&id=$1
RewriteRule ^projects ?action=projects

RewriteRule ^clients ?action=clients
RewriteRule ^admins ?action=admins
RewriteRule ^settings ?action=settings

, поэтому эти ссылки будут выглядеть как webroot/subdir/projects или webroot/subdir/settings и они работают.

Моя проблема возникает в строке projects, где я должен добавить идентификатор.Когда я нажимаю на ссылку, которая говорит что-то вроде: webroot/subdir/projects/284, все мои таблицы стилей и изображения ломаются.Мой CSS настроен так:

<link rel="stylesheet" href="resources/css/reset.css" />
<link rel="stylesheet" href="resources/css/main.css" />
<link rel="stylesheet" href="resources/css/buttonPro.css" />

Есть ли способ обойти это?Я неправильно выполняю правила переписывания?

1 Ответ

2 голосов
/ 01 сентября 2011

Предполагая, что ваша папка resources также находится в webroot/subdir, вам нужно сделать ваши ссылки абсолютными путями.Когда страница меняется на projects/([0-9]+), ваш рабочий каталог теперь становится webroot/subdir/projects, даже если путь переписывается, поэтому он пытается найти ваши таблицы стилей на webroot/subdir/projects/resources, который не существует.

Добавление / в начало вашего местоположения должно работать:

<link rel="stylesheet" href="/resources/css/reset.css" />
<link rel="stylesheet" href="/resources/css/main.css" />
<link rel="stylesheet" href="/resources/css/buttonPro.css" />

Если ваша папка ресурсов находится вне домашнего / корневого каталога, вам нужно будет указать полный путь к этому каталогу, например так:

<link rel="stylesheet" href="/webroot/subdir/resources/css/reset.css" />
<link rel="stylesheet" href="/webroot/subdir/resources/css/main.css" />
<link rel="stylesheet" href="/webroot/subdir/resources/css/buttonPro.css" />
...