为什么我的自定义404处理程序看不到我的静态内容?

问题描述:

我决定在我的项目中使用SEO友好的网址。这就是为什么我通过我的404自定义处理程序(的index.php)为什么我的自定义404处理程序看不到我的静态内容?

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; 
} 

检查路径。然后我用$页面来决定的地方发送的所有请求什么返回用户

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 

或有另一种解决这个问题?

+0

看到这一点:http://stackoverflow.com/问题/ 7653869/php-if-serverrequest-uri – shnisaka 2013-03-18 20:07:55

+0

@shnisaka我无法看到上述链接与我的问题的任何关系。你能解释一下你的观点吗? – Krzysztof 2013-03-18 20:15:55

当您从错误文档链接到您的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/">