2016-01-17 30 views
4

我希望能自己实现某种类型的cms。我看到我可以捕获Apache环境变量,称为PATH_INFO,这样我可以在我的网站上制作动态部分(就像joomla一样)。PHP - 使用pathinfo变量使相对路径不起作用

例如:

stackoverflow.com/index.php/section1/article22 

我目前正在开发一个功能找出请求至极部分和文章,这样做:

$url_seccion = $_SERVER['PATH_INFO']; 
$secciones_array = array_values(array_filter(explode('/', $url_seccion))); 

这部分工作正常,问题我现在所有的相对路径都被打破了。有人可以解释我为什么会发生这种情况,我能做些什么来解决它? (请不要告诉我,我必须使用绝对路径...)

+0

你可以添加生成相对路径的代码吗? – RST

回答

1

例如:

$url = "stackoverflow.com/index.php/section1/article22"; 
$myArray = array_slice(explode('/', $url), 2); 
echo "section: ". $myArray[0] ."<br /> article: ". $myArray[1]."<br />"; 
if(isset($myArray[0])) { 
$section = $myArray[0]; 
} else { 
$section = ""; 
} 

if(isset($myArray[1])) { 
$article = $myArray[1]; 
} else { 
$article = ""; 
} 

switch(strtolower($section)) { 
default: 
echo "home"; 
break; 
case 'section1': 
echo "function for find and show my article: ". $article; 
break; 
} 

使用保存在数据库部分,您可以使用select找到它的ID,然后文章

要重定向到的index.php使用的所有请求:

的.htaccess

Options -Indexes +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond $0 !^(index\.php|css|js|img) 
RewriteRule ^(.*)$ index.php [L] 

index.php:

$url = addslashes($_SERVER['REQUEST_URI']); 
$myArray = array_slice(explode('/', $url), 1); 
+0

感谢代码Julio。但我想我遇到的问题不涉及这部分代码。只有这样,当我写:http://www.example.com/index.php/anotherthing/anotherone/所有相对路径...到CSS ...图像...所有这些都显示为断开的链接。 –

+0

检查你的.htaccess。它可以阻止每个请求 –

+0

何整洁!对不起,我错过了那部分。 –