带有其他文件夹资源的虚荣URL

时间:2012-12-07 11:23:26

标签: php apache mod-rewrite

我想为我的网站创建更短的链接,例如

site.come/u/1

而不是

site.com/user.php?u=1

我玩过mod_rewrite,但老实说我不知道​​我在做什么,我可以创建网址但是当资源被加载到页面上时,它们是从/u/css/core.css代替/css/core.css

我正在使用相对URL加载css / images / js,有没有办法让重写规则排除某些文件夹而不必将我的所有代码都更改为绝对URL?

由于

3 个答案:

答案 0 :(得分:2)

您可以尝试:

RewriteCond %{REQUEST_URI} ^(css|js|images)/.*$ [NC]
RewriteRule ^(.*)$ $1 [L]

放在之前任何其他规则。

我测试了它here并且它有效!

答案 1 :(得分:1)

嗯,你几乎回答了自己的问题 - 你需要使用相对路径,而不是使用相对路径。

您的浏览器现在将该页面视为www.site/u/user.php,即您需要使用../css/core.css。如果您的站点位于根目录中,/ css / core.css可能就足够了,但使用完整路径更安全(即echo $webpath."css/core.css",其中$ wehpath很可能类似于$webpath="http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];)< / p>

答案 2 :(得分:0)

你应该使用绝对路径,一切都会好的。

例如,您可以这样做:

<?php 
$baseURL = basename($_SERVER['SCRIPT_FILENAME']); 
?>
<link href="<?php echo $baseURL; ?>/css/core.css" rel="stylesheet" type="text/css" />