2010-09-25 6 views
3

Доброе утро.проблема с переписыванием URL-адреса (htaccess)

настоящее время у меня это маленькое правило в моей .htaccess

RewriteEngine On 
RewriteBase/
RewriteRule ^brochure/([0-9]+)$ /brochure.php?cat_path=$1 [L] 

(я просто используя цифры, например, здесь, будет категория имен позже.)

Это перенаправляет отлично, но когда его (css, js, images, includes и т. д.)

Я понимаю проблему (она отбрасывает структуру каталогов).

Изменение правила для этого разрешает проблемы с изображениями, css и JS.

RewriteRule ^([0-9]+)$ brochure.php?cat_path=$1 [L] 

Но это не то, что я хочу на самом деле.

Каков правильный способ создания URL-адресов для перезаписи и сохранения структуры каталогов?

Thankyou, у меня есть поиск по предыдущим вопросам, но я не могу найти подходящий ответ.

ответ

2

Вы должны использовать абсолютные пути или путь относительно корневой директории, как:

<img src="http://example.com/image.gif" alt="" /> 
<img src="/images/image.gif" alt="" /> 

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

<img src="../images/image.gif" alt="" /> 
+0

за все? включая все мои js, css и php-файлы? Я думал, что будет более эффективный способ сделать это. :( – shane

+0

* Неэффективность * не использует абсолютные пути, она использует относительные пути. Это то, что вам придется исправлять раньше или позже. –

+0

Хорошо спасибо за совет. Теперь я вижу, где использовать относительные пути сделайте мою жизнь труднее в будущем. Спасибо, ребята. – shane

0

Хотя я честно рекомендую ответ Лекенштейна, есть еще одно решение. Ваше правило mod_rewrite в основном перемещает /brochure.phpcat_path=123 в /brochure/123. Вы можете просто исправить свои относительные URL-адреса и установить правильный путь. Вы должны понимать, что эти пути анализируются браузером, поэтому фактическая структура файловой системы сервера не имеет к этому никакого отношения.

т.д .: css/style.css станет ../css/style.css

Смежные вопросы