URL перезаписывает разрывы относительных путей - PullRequest
0 голосов
/ 17 февраля 2012

Недавно я потратил несколько дней, пытаясь заставить мой .htaccess переписать URL-адреса, из которых я в конечном итоге преобладал. Мой типичный URL теперь переписан с http://example.co.uk/pages/aboutMe/pages/aboutMe.php (не спрашивайте) на http://example.co.uk/aboutMe, что меня очень устраивает.

Но в результате мои относительные пути больше не работают - я больше не могу просто набрать ../images/email.png в исходном коде. Вместо этого я должен напечатать путь полностью - /pages/contact/images/email.png, что не является хорошей практикой / соглашением, является очень жестким (в том смысле, что он не гибкий), и я вижу, что это станет очень проблематичным в будущем, если я когда-нибудь решу например, переименовать папку.

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

Вот мои RewriteRules:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

# Remove www.
RewriteCond %{HTTP_HOST} ^www.mythofechelon.co.uk$ [NC]
RewriteRule ^(.*)$ http://mythofechelon.co.uk/$1 [R=301,L]

# Rewrite /pages/filename/pages/filename.php to /fileName
RewriteRule ^home/?$ /pages/index/pages/index.php [L]
RewriteRule ^projectsPortfolio/?$ pages/projectsPortfolio/pages/projectsPortfolio.php [L]
RewriteRule ^projectsPortfolio-flash/?$ pages/projectsPortfolio/pages/projectsPortfolio-flash.php [L]
RewriteRule ^projectsPortfolio-code/?$ pages/projectsPortfolio/pages/projectsPortfolio-code.php [L]
RewriteRule ^aboutMe/?$ pages/aboutMe/pages/aboutMe.php [L]
RewriteRule ^contact/?$ pages/contact/pages/contact.php [L]

Мне пришлось вручную переписать URL для каждой из моих страниц, поскольку мне сказали, что в моих URL нет шаблона. В любом случае, постарайтесь не отвлекаться на это.

Спасибо.

1 Ответ

1 голос
/ 17 февраля 2012

Насколько я знаю, для этого нет обходного пути. В зависимости от ваших правил перезаписи вы можете создать другой набор правил перезаписи для папки с изображениями (например, переписав "http://example.co.uk/images" в" http://example.co.uk/pages/contact/images").

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

...