php,url隐藏着.htaccess

时间:2014-07-15 08:22:19

标签: php .htaccess

这是真正的网址:

http://web/app/index.php?id=1

这里我使用了当前的.htaccess并且和我一起工作。

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?id=$1

现在网址为:http://web.com/app/index/i并且工作正常

但问题是真正的网址

http://web.com/app/index.php?id=1&name=abc

如何设置提及url与.htaccess保持简短或任何其他良好的隐藏URL-的解决方案。 是否可以向用户显示只有一个网址http://web.com/app,但它可以转到其他网页,而网址会保留一个网址静态。

问候

2 个答案:

答案 0 :(得分:0)

如果我们说,好的做法是将所有内容重写为一个index页面,如下所示:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

然后在你的index.php中,$uri = $_SERVER['REQUEST_URI']

获得了你的意见
http://example.com/app -> $uri = /app
http://example.com/app/sub-app -> $uri = /app/sub-app

但查询字符串也适用于$uri变量:

http://example.com/app/?a=1&b=3 -> $uri = /app/?a=1&b=3

在这种情况下,如果您想在?问号之前检查uri部分:

$realRri = strtok($uri,'?'); // and you have '/app/' instead of '/app/?a=1&b=3'

接下来,您可以检查并操纵$uri;

示例

$trimmedUri = trim($realRri, '/');

if ($trimmedUri == 'app')
{
    // you can show app page
}
elseif ($trimmedUri == 'contact') 
{
    // show contact
}
else 
{
    // show 404 page not found
}


// you can have some dynamic also also

if (is_file($filePath = 'custom-page/'.$trimmedUri))
{
    include $filePath;
}
else 
{
    // 404 page
}

最终代码(关于您当前的脚本)

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

#rewrite php file
RewriteRule ^([a-zA-Z]+)$ $1.php 
#rwwrite with id
RewriteRule ^([a-zA-Z]+)/([0-9]+)/?$ $1.php?id=$2 
#rewrite with id and name
RewriteRule ^([a-zA-Z]+)/([0-9]+)/([0-9a-zA-Z]+)/?$ $1.php?id=$2&name=$3

答案 1 :(得分:0)

我认为你所寻找的东西就像AJAX,主要是因为

  

但它可以转到其他页面,而网址会保持一个网址静止。

在这种情况下,你会看到Javascript而不是PHP。您需要一种快速处理数据并根据需要更改数据的方法。我最近开始学习Angular,它表现出很多希望。自己完成教程(只是谷歌angular.js和教程在他们的网站上),或其他一些javascript库(除非你想硬编码所有东西,在这种情况下,祝你好运)像jQuery或MooTools(因为提到的名字,因为他们是我知道的图书馆。据我所知(我不是代码大师),但网站的URI是告诉服务器向您展示的内容。你可以制作快捷方式

但是,如果你想要它没有.php文件名,那么我相信

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)\.php\??(.*)$ $1.php&$2

理论上应该能得到你想要的东西。

注意:我现在无法测试,因此可能会出错。

编辑:它出错了,但不幸的是我必须去睡觉。我会试着去找它tomorr.w