URL重写会破坏相对路径

时间:2012-02-17 13:23:43

标签: .htaccess url path rewrite relative

我最近花了好几天试图让我的.htaccess重写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),并且因为它正在寻找不存在的目录而感到困惑。这有解决方法吗?或者这是一个整洁的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]

我不得不手动重写每个网页的网址,因为我被告知我的网址中没有模式。无论如何,尽量不要因此而陷入困境。

感谢。

1 个答案:

答案 0 :(得分:1)

据我所知,没有解决方法。根据您的重写规则,您可以为图像文件夹创建另一组重写规则(例如,将“http://example.co.uk/images”重写为“http://example.co.uk/”页/接触/图像“)。

话虽如此,当你开始重写URL时,我真的不认为使用绝对路径来处理图像是不好的做法。实际上它更健壮,因为你可以自由地改变URL的重写方式而不会破坏每个相对路径。