2

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

site.come/u/1

代替

site.com/user.php?u=1

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

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

谢谢

4

3 回答 3

2

您可以尝试:

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

并将其放在任何其他规则之前。

我在这里测试过它并且有效!

于 2012-12-07T11:38:59.973 回答
1

好吧,你几乎是在回答你自己的问题——而不是使用相对路径,你需要为你的 css 使用绝对路径。

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

于 2012-12-07T11:36:58.797 回答
0

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

例如,您可以这样做:

<?php 
$baseURL = basename($_SERVER['SCRIPT_FILENAME']); 
?>
<link href="<?php echo $baseURL; ?>/css/core.css" rel="stylesheet" type="text/css" />
于 2012-12-07T11:34:51.213 回答