twitter喜欢url和htaccess

时间:2013-09-03 16:20:54

标签: php .htaccess

以下是我的.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

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这是你使网友友好的最糟糕的方式,因为如果你有1000页,你必须在“开关”中为他创建一个“案例”。 如果您执行“require_once”作为参数传递$ key,您将遇到一个漏洞,称为LFI(Local File Inclusion)。

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

寻找宁静的路线。

实施例? Slim Documentation

答案 1 :(得分:0)

如果您正在寻找隐藏.php扩展程序的.htaccess代码,那么这应该可行:

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]