我想为我的网站创建较短的链接,例如
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?
谢谢
我想为我的网站创建较短的链接,例如
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?
谢谢
您可以尝试:
RewriteCond %{REQUEST_URI} ^(css|js|images)/.*$ [NC]
RewriteRule ^(.*)$ $1 [L]
并将其放在任何其他规则之前。
我在这里测试过它并且有效!
好吧,你几乎是在回答你自己的问题——而不是使用相对路径,你需要为你的 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"];
)
您应该使用绝对路径,一切都会好起来的。
例如,您可以这样做:
<?php
$baseURL = basename($_SERVER['SCRIPT_FILENAME']);
?>
<link href="<?php echo $baseURL; ?>/css/core.css" rel="stylesheet" type="text/css" />