Недавно я потратил несколько дней, пытаясь заставить мой .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 нет шаблона. В любом случае, постарайтесь не отвлекаться на это.
Спасибо.