htaccess:重写 - 但保留网站资源?

时间:2013-03-07 23:04:43

标签: .htaccess mod-rewrite

我知道这可能是一个经常被问到的问题,我已经找到了答案,但却无法提出任何可以回答我案件的问题。我假设是因为我没有弄清楚正确的搜索条件,所以我很抱歉如果这是多余的...感谢您的时间!

我使用.htaccess将我的网址重写为更加用户友好的格式。如果有一个更好的方法可以做到这一点,我真的只想这样做,我很感激学习!

反正;我将localhost / room / 2重写为index.php?p = room& id = 2。这就像一个魅力。

RewriteRule ^room/([0-9]*)$ /index.php?p=room&id=$1 [L]

你可能已经可以告诉我的问题:我正在使用room / room_number创建一个虚拟文件夹。因此,当我 - 例如 - 使用IMG-Tag包含图片时,src-Attribute也会被重写,以适应服务器假定的工作目录。而不是请求

localhost/img/image.jpg

它要求

localhost/room/img/image.jpg

这显然不是正确的位置。所以我的问题是;当同时重新将页面的资源重定向到其原始路径时,如何将URL重写为友好且用户友好的内容?

2 个答案:

答案 0 :(得分:1)

使用前导斜杠前面的路径,使用相对于根目录的路径:

<img src="/img/image.jpg" />

答案 1 :(得分:1)

此问题的另一个(并且相当标准)解决方案是添加RewriteCond,以便在请求资源确实存在时永远不会应用规则。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^room/([0-9]*)$ /index.php?p=room&id=$1 [L]