2013-04-12 135 views
0

其实我已经尝试过在这里所说的教程:http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urlsmod_rewrite的PHP问题

我曾尝试使用本教程的PHP版本。但它似乎并不奏效。其实这对我来说看起来有点不合逻辑。

这是我需要的地方.htaccess文件的代码:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^.*$ ./index.php 

正如我已经测试这实际上重定向一切index.php文件。因此,我已插入此代码,以我的index.php文件:

$request = $_SERVER['REQUEST_URI']; 

$params  = split("/", $request); 


$safe_pages = array("login"); 

if(in_array($params[0], $safe_pages)) { 
echo 'ok'; //insert a file here 
} else { 
echo 'not ok'; //header to 403.php 

}

此代码是相当starightforward。如果URI是/ login,它应该回显:“ok”(在那里插入文件)。

但是,无论何时我输入:mywebsite.com/login它只是总是给我index.php,消息:“不好”,所以应该是错误的PHP代码我猜。

+1

如果您有一个理解的问题,请联系该教程的作者。您也可以在该教程的评论中保留与该教程相关的讨论。 –

+0

使用'print_r($ params);'查看代码出错的地方;大概'[0]'。 – mario

+0

另外请解决/回答你先前的问题,似乎是同一主题首先:[Mod_rewrite - 创建干净的URL](http://stackoverflow.com/q/15952942/2261774)。 –

回答

0

您正在上的.htaccess

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
+1

如果获取请求的页面的方法是通过'REQUEST_URI',你不需要将其重定向到一个命名参数 - 虽然有人建议,但并不是必须的。 ^^ – Jon

+0

它仍然无法正常工作。 –

+1

@Jon好吧...很高兴知道..谢谢:) – jycr753

0

这应当询问服务网址,如“网页/项目”与像“网页/项目” 网址

<?php 
$request = $_SERVER['QUERY_STRING']; 

$params  = explode("/", $request); 


$safe_pages = array("login"); 

if(in_array($params[0], $safe_pages)) { 
    echo 'ok'; //insert a file here 
} else { 
    echo 'not ok'; //header to 403.php 
} 
?> 

这不工作缺少一个多方法这应该工作:

<?php 
$request = $_SERVER['REQUEST_URI']; 

$params  = explode("/", $request); 


$safe_pages = array("login"); 

$last_item = count($params)-1; 

if(in_array($params[$last_item], $safe_pages)) { 
    echo 'ok'; //insert a file here 
} else { 
    echo 'not ok'; //header to 403.php 
} 

您正在测试错误的项目。您应该检查数组末尾的字符串'login'。功能拆分折旧,使用explode()

+0

为什么不做'$ last_item = end($ params);'然后'in_array($ last_item,$ safe_pages)'?但是,如果您想扩展并允许'myPage/how-to'等,那么整个方法将不再有效。 ^^ – Jon