1

下面是我的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On

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

RewriteRule ^(.*)$ index.php?url=$1 
RewriteRule ^(.*)/$ index.php?url=$1  
</IfModule>

我正在尝试做花哨的推特网址。

www.mywebsite.com/home 而不是 www.mywebsite.com/home.php

在我的 index.php 代码中是这样的:

<?php

$key=$_GET['url'];

if($key=='index')
{
include('welcome.php'); // welcome page
}
else if($key=='login')
{
include('login.php'); // Login page
}
else
{
include('index.php'); // go back to index.php
}
?>

这一直给我一个无效的 404 错误。当我输出时: echo $key它显示如下:index.php不是index

我究竟做错了什么?

4

2 回答 2

1

这是使 url 友好的最糟糕的方式,因为如果您有 1000 个页面,则必须在“开关”中为他创建一个“案例”。如果您执行“require_once”作为参数传递 $key,您将遇到一个漏洞,称为 LFI(本地文件包含)。

我建议你学习或使用 REST 微框架,如 Slim、Respect/Rest、Aura Router 等。

寻找宁静的路线。

例子?超薄文档

于 2013-09-03T16:26:31.047 回答
0

如果您正在寻找 .htaccess 代码来隐藏.php扩展名,那么这应该可以工作:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC]
RewriteRule ^ %1 [R=301,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
于 2013-09-03T17:03:31.890 回答