这是真正的网址:
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,但它可以转到其他网页,而网址会保留一个网址静态。
问候
答案 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