mod_rewrite вызывает потерю таблицы стилей - PullRequest
0 голосов
/ 20 декабря 2009

Я использую mod_rewrite, чтобы очистить некоторые из моих URL (duh), и я получил его на работу. Сорта. Он перенаправляет на правильную страницу, но таблица стилей не отображается. Вот мой код в .htaccess:

RewriteEngine on
RewriteRule ^blog/([^/\.]+)/?$ post.php?page=$1 [L]

Так что же происходит? Кстати, я впервые работаю с mod_rewrite.

Ответы [ 3 ]

4 голосов
/ 20 декабря 2009

Возможно, ваша CSS-ссылка нарушена вашими новыми URL, если вы используете относительные ссылки. например:

Используемая ссылка на таблицу стилей: ../css/stylesheet.css
Старая страница: /blog/example/post.php
Новая страница: /blog/2009/12/example/post.php

Этот перерыв также повлияет на изображения. Простой способ исправить это - определить окончательный URL-адрес для CSS и создать абсолютную ссылку на него. например,

/css/stylesheet.css

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

2 голосов
/ 20 декабря 2009

Ваш CSS (допустим, /blog/style.css) собирается post.php? Page = style.css

Чтобы исправить, я бы предложил поставить это сразу после RewriteEngine

RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{SCRIPT_FILENAME} -d

Это перенаправит все запросы, где файл существует, например, файл CSS / JS, прямо в файл.

В будущем я предлагаю перейти к URL-адресу в браузере и посмотреть, к чему он вас приведет. Если он не работает в браузере, он не будет работать для страницы.

1 голос
/ 20 декабря 2009

Вероятно, только ваши новые URL-адреса приводят к тому, что относительные URL-адреса разрешаются иначе, чем при использовании ваших старых URL-адресов. Попробуйте использовать абсолютный URL-путь, например:

/style/screen.css

Вместо относительного URL-пути, например:

style/screen.css
./style/screen.css
...