0

我实际上已经尝试过这里所述的教程: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,并显示消息:“not ok”,所以我猜 php 代码应该有问题。

4

2 回答 2

0

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

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
于 2013-04-12T21:48:19.827 回答
0

这应该支持像'page/item'这样的url

<?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' 之类的 url 这应该可以:

<?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”。并且函数split贬值了,使用explode()

于 2013-04-12T22:04:48.977 回答