Скажем, я работаю над сайтом в папке c:\website
.
Если у меня есть относительные URL-адреса в моем page.html
например:
<img src="images/logo.gif">
Это будет хорошо работать, когда я просматриваю страницу на своем жестком диске, и если я загружу его в Интернете.
Но так как я хочу использовать переписывание URL, скажем, мой.htaccess имеет следующую строку:
RewriteEngine On
RewriteRule ^folder1/folder2/?$ page.html [L]
Итак, теперь страница будет индексироваться в Google как domain.com/folder1/folder2/
(это то, что я хочу)
Но тогда онлайн файл будет искать domain.com/folder1/folder2/images/logo.gif
, которого, конечно, не существует.
С другой стороны, если я добавлю /
в мои относительные URL-адреса, например:
<img src="/images/logo.gif">
В онлайн файле будет поиск domain.com/images/logo.gif
который хорош, но я не смогу просмотреть файл на своем жестком диске, поскольку он будет искать:
c:\images\logo.gif
пока файл находится на c:\website\images\logo.gif
Есть ли способ сделать этот файл должным образом как на моем жестком диске, так и на веб-сайте с таким типом правила перезаписи URL?
Вам определенно нужно использовать абсолютные URL для ваших изображений, т. <img src="/images/logo.gif">
Затем вы можете создать такое правило, чтобы справиться с проблемой localhost:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(images/.+)$ /website/$1 [L,NC,R]
Это правило будет срабатывать только тогда, когда изображение не будет найдено (то есть на локальном хосте), но не будет запускаться на реальном сервере, поскольку изображение будет найдено.
/website/
?