проблема новичка с модификацией переписывает и относительные URL

Я должен делать что-то ужасно неправильно, потому что, неважно, как я пробую или гуглю его, я не могу найти ответ :(

Так, я хочу иметь URL как http://localhost/BLUEPRINT/list/857 для фактической загрузки совершенно рабочего URL как это: http://localhost/BLUEPRINT/list.php?lid=857

Я могу записать переписать правило в .htaccess файле, и я могу считать переменную крышки. Проблема состоит в том, что все пути в list.php относительны. CSS, изображения, JavaScript e.t.c. Таким образом, когда благоприятный для SEO URL загружается, все те объекты смотрят в BLUEPRINT/list/857/...

Так, например, это: на самом деле что-то вроде этого при запросе благоприятного для SEO URL:

Таким образом, что я могу сделать?

Я мог, вероятно, попытаться преобразовать все пути на странице (страницах) для укоренения родственника (напр. "/BLUEPRINT/images/logo.png") вместо родственника. Но на странице существуют десятки и даже если я сделаю, то они не будут работать над фактическим сервером, потому что там это должны быть "/изображения" вместо "/BLUEPRINT/images". Таким образом, я не мог только загрузить свои файлы на фактический сервер.

Каковы мои опции? Как всем этим замечательным сценариям там нравится Wordpress, joomla, e.t.c. решают эту проблему? Что, черт возьми, я делаю неправильно? Это сводит меня с ума!

6
задан fractalbit 25 February 2010 в 15:27
поделиться

3 ответа

У ваших новых URL-адресов другая база префикс пути. Это означает, что относительные пути URL разрешаются по-другому. Ссылка images / logo.png теперь преобразована в /BLUEPRINT/list/images/logo.png вместо /BLUEPRINT/images/logo.png .

Чтобы исправить это, используйте в ссылках абсолютные пути URL, например:

<img src="/BLUEPRINT/images/logo.png" />

Либо, если вы не хотите добавлять базовый путь URL / BLUEPRINT / ко всем ссылочным элементам, установите базовый URL с base :

<base href="/BLUEPRINT/" />

Теперь относительные пути URL разрешаются из этого базового URL вместо текущего URL. Но обратите внимание, что изменение базового URL влияет на все относительных URL.

3
ответ дан 17 December 2019 в 07:03
поделиться

Вы можете написать условие, которое позволит запросам к CSS, JS и другим путям проходить через вас и игнорировать ваши правила перезаписи для list.php. Вот пример.

# Turn on URL rewriting
RewriteEngine On

# If your URL is www.example.com/, use /
RewriteBase /

# Find CSS and JS paths
RewriteCond $1 ^(BLUEPRINT/css|BLUEPRINT/js)

# No rewriting
RewriteRule ^(.*)$ - [PT,L]

Вот отличный учебник от Apache с массой примеров: http://httpd.apache.org/docs/2.2/misc/rewriteguide.html

Удачи!

EDIT: Еще одна хорошая ссылка от Apache - документация по mod_rewrite. http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html Выполните текстовый поиск по 'passthrough'.

Еще одна часть правила RewriteRule, на которую следует обратить внимание, это тире '-'. Это означает, что "подстановка не должна производиться".

Наконец, я добавил в пример правила RewriteEngine и RewriteBase. Это должно сделать его более полным.

1
ответ дан 17 December 2019 в 07:03
поделиться

Вы пробовали применить правило «RewriteBase»?

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritebase

0
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: