Mod_重写PHP问题

Mod_重写PHP问题,php,apache,mod-rewrite,uri,friendly-url,Php,Apache,Mod Rewrite,Uri,Friendly Url,实际上,我已经尝试过此处所述的教程: 我尝试过使用PHP版本的教程。然而,它似乎不起作用。事实上,这对我来说有点不合逻辑 这是我需要放入.htaccess文件的代码: Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^.*$ ./index.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
}

这段代码非常简单。如果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]

这应该支持类似“页面/项目”的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
}
?>

这不适用于像“页面/项目”这样的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
}

如果您对该教程有理解问题,请联系该教程的作者。您还可以在该教程的评论中保留与该教程相关的讨论查看代码哪里出错;可能是
[0]
。也请先解决/回答您之前的问题,这似乎是同一主题:。没有人能回答我之前的问题。从那时起,我也学到了很多,我也测试了更多的例子,但似乎没有人适合我。事实上,没有人能给我一个好的答案…@mario我已经这样做了,我得到了以下信息:login如果获取请求页面的方法是通过
请求URI
,你不需要将其重定向到一个命名参数-尽管建议这样做,但它不是你所暗示的必需的^^@激进的活动要这样做,您可以说
$request=$\u GET['q']@Jon-hmm现在确实有用,但我不明白为什么??为什么q?@radial_活动是因为这一行:
RewriteRule^(.*)$index.php?q=$1[L,QSA]
*
周围的括号捕获所有内容并将其放入
$1
,然后由
?q=$1
分配。您可以将其更改为您想要的任何内容,如
?myVar=$1
,然后您可以使用
$\u GET['myVar']访问它
@radial\u Activity请将您根目录中的所有内容压缩并通过电子邮件发送给我(我个人资料中的联系信息)。这样我就可以更好地了解出了什么问题
?但是,如果您想要扩展并允许
myPage/how-to
等,那么整个方法将不再有效^^