我决定在我的项目中使用SEO友好的url。这就是为什么我通过404自定义处理程序(index.php)发送所有请求
ErrorDocument 404 /index.php
这是我检查URI
路径的地方if(isset($_SERVER['REQUEST_URI'])){
$path_begin_expected = "/page/";
$path_begin_evaluated= substr($_SERVER['REQUEST_URI'], 0, strlen($path_begin_expected));
if($path_begin_expected == $path_begin_evaluated ){
$page = substr($_SERVER['REQUEST_URI'], strlen($path_begin_expected), strlen($_SERVER['REQUEST_URI']));
}
else {
$page = null;
}
}
else {
$page = null;
}
然后使用$page决定返回给用户
的内容switch($page)
{
case 'main':
include("webapps/main/pages/main_bc.php");
break;
...other cases here
}
我也用了
Alias /page c:/work/Languator/trunk/php/htdocs/my_application/
现在,如果
$_SERVER['REQUEST_URI']
是正确的。请求具有服务器上存在的路径)像这样的请求可以工作OK
/page/home or /page/help-1 or /page/more-docs
但是当我使用这些请求时:
/page2/home or /pag/help-1 or /pagex/more-docs/
没有css文件或js文件或img图片加载。我的浏览器像这样请求这些文件:
mydomain/page2/css/styles.css
mydomain/pag/css/styles.css
mydomain/pagex/more-docs/css/styles.css !!!
但显然这些路径不存在。
谁能解释一下这是为什么?如何替换path2 into path
pag into path
pagex/more-docs into path
还是这个问题还有别的解决办法?
当你从错误文档中链接到你的CSS和JS文件时,你不应该使用相对链接。用/
或http://example.com/
启动你的CSS和JS链接。以下两种都可以。
<link rel="stylesheet" href="/css/styles.css" type="text/css">
<link rel="stylesheet" href="http://example.com/css/styles.css" type="text/css">
另一个解决方案是在页面的头部包含一个base
标签,告诉浏览器如何解释所有的相对链接:
<base href="http://example.com/">