Довольно базовый мод переписать вопрос - PullRequest
0 голосов
/ 01 февраля 2012

Мой сайт фильтрует все через скрипт index.php, и при чтении документов для mod_rewrite это кажется чертовски легким, но я немного застрял. Я подумал, что заодно начну страницу, чтобы посмотреть, смогу ли я заставить ее работать, и застрял довольно быстро.

У меня есть профили пользователей, длинная форма которых в основном:

http://www.mysite.com/index.php?content=profile&id=2172

Итак, я добавил одно правило перезаписи в мой файл .htaccess, который находится в корневой папке:

RewriteRule ^profile/([0-9]+)$ index.php?content=profile&id=$1

Идея теперь в том, чтобы иметь возможность ввести mysite.com/profile/2172

Редирект действительно отображает правильную страницу, но происходит то, что каждый CSS-файл, изображение и т. Д. Получает / profile / добавляется посередине, что, конечно, не там, где находятся изображения и CSS-файлы. Я использую относительные пути в коде, поэтому пример изображения в коде может быть: images/userimage.jpg

Что происходит, так это то, что указанная выше относительная ссылка превращается в:

mysite.com/profile/images/username.jpg

Для меня это не имеет смысла, поскольку путь к изображению не соответствует шаблону перезаписи (/profile/*), так почему же фиктивный путь добавляет /profile/ ко всем моим внутренним ссылкам?

Я пытался добавить RewriteCond %{SCRIPT_FILENAME} !-f в htaccess непосредственно перед перезаписью, чтобы посмотреть, что произошло, без изменений.

Извините, если это простой и основной вопрос, но может ли кто-нибудь с реальным опытом переписывания модов дать мне несколько советов, чтобы я мог заставить этот простой случай работать и открыть страницу с соответствующими ссылками в моем коде на мой включенный css а файлы изображений? Я не использовал никаких флагов для Rewriterule, так как у меня есть только одна строка после включения двигателя (и там также есть строка followsymlink).

1 Ответ

0 голосов
/ 01 февраля 2012

Для меня это не имеет смысла, поскольку путь к изображению не соответствует шаблону перезаписи (/ profile / *), так почему фиктивный путь добавляет / profile / ко всем моим внутренним ссылкам?

Ваши изображения относятся к обслуживаемой странице, которая имеет /profile/, например. mysite.com/profile/2172. Возможно, вы захотите изменить ссылку на изображение / CSS на абсолютную, начиная с корня, т.е. /images/imag.jpg.

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

RewriteEngine on
RewriteBase /

#rewrite to remove profile for jpg, css etc, must go above existing rule below
RewriteRule ^profile/(.+\.(jpg|css|js|png))$ $1 [L,NC]

#existing rule
RewriteRule ^profile/([0-9]+)$ index.php?content=profile&id=$1 [L,NC]
...