Как отличить от серверной стороны, между первым запросом браузера (HTML-файл) и следующим (изображения, CSS, скрипты ...)? - PullRequest
0 голосов
/ 13 мая 2011

Я программирую сайт с SEO-дружественными ссылками, то есть помещаю заголовок страницы или другой описательный текст в ссылку, разделенную косой чертой. Например: h * tp: //www.domain.com/section/page-title-bla-bla-bla/.

Я перенаправляю запрос в основной скрипт с помощью mod_rewrite, но ссылки в тегах script , img и link не разрешаются правильно. Например: при условии, что вы посещаете вышеуказанную ссылку, тег запрашивает файл по URL h * tp: //www.domain.com/section/page-title-bla-bla-bla/js/file. js , но файл на самом деле http://www.domain.com/js/file.js

Я не хочу использовать переменную или константу во всех URL-адресах HTML-файлов.

Я пытаюсь перенаправить клиентские запросы в каталог или на другой сервер. Можно ли выделить первый запрос на страницу, который идет после? Это можно сделать с mod_rewrite для Apache или PHP?

Надеюсь, я хорошо объяснил:)

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

Это проблема разрешения относительных URI .Судя по вашему описанию, кажется, что вы ссылаетесь на другие ресурсы, используя относительные пути URI: в /section/page-title-bla-bla-bla ссылка URI, такая как js/file.js или ./js/file.js, будет преобразована в /section/page-title-bla-bla-bla/js/file.js.

Чтобы всегда ссылаться/js/file.js независимо от фактического базового пути URI, используйте абсолютный путь /js/file.js.Другим решением было бы установить базовый URI явно на /, используя элемент BASE (но учтите, что это повлияет на все относительные URI).

0 голосов
/ 14 мая 2011

Использование правил перезаписи для решения проблемы относительных путей неразумно и имеет множество недостатков.

Во-первых, это усложняет обслуживание, поскольку в вашей системе сотни различных ссылок.

Во-вторых, а если серьезно, вы уничтожаете кешируемость. Ресурс, запрашиваемый здесь:

http://www.domain.com/section/page-title-bla-bla-bla/js/file.js    

будет рассматриваться как ресурс, отличный от

http://www.domain.com/section/some-other-page-title/js/file.js

и загружается два раза, в результате чего количество запросов увеличивается в десятки раз.

Что делать?

Вместо этого исправьте основную причину проблемы: используйте абсолютные пути

<script src="/js/file.js">

или константа, или, если все остальное не проходит тег <base>.

...