繁体   English   中英

Mod_Rewrite PHP问题

[英]Mod_Rewrite PHP issue

我实际上已经尝试过此处所述的教程: http : //net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls

我试图使用该教程的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

}

这段代码相当简单。 如果URI为/ login,则应回显:“ ok”(将文件插入此处)。

但是,每当我键入: mywebsite.com/login时,它总是总是给我index.php,并显示消息:“不好”,所以我猜想php代码应该出了问题。

您在.htaccess上缺少另一种方法

RewriteEngine On
RewriteBase /

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

这应该支持网址,例如“页面/项目”

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

这不适用于'page / item'这样的网址,这应该可以:

<?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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM