URL重写:";index.php?id=5“;至;home.html“;
我正在使用php和“template.inc”类开发一个网站。 问题是,我想创建一个迷你cms,允许管理员使用以下mysql属性创建一个“html”页面:URL重写:";index.php?id=5“;至;home.html“;,php,url-rewriting,Php,Url Rewriting,我正在使用php和“template.inc”类开发一个网站。 问题是,我想创建一个迷你cms,允许管理员使用以下mysql属性创建一个“html”页面: Table Name : Page ----------------- id :auto-icremented) name :varchar 在架构中,如果他创建了页码“5”,则url为 "ww.mywebsite.com/index.php?id=5". 但是,这不是很忙,所以,因为我在url重写方面非常糟糕,即使我读了很多教程,
Table Name : Page
-----------------
id :auto-icremented)
name :varchar
在架构中,如果他创建了页码“5”,则url为
"ww.mywebsite.com/index.php?id=5".
但是,这不是很忙,所以,因为我在url重写方面非常糟糕,即使我读了很多教程,我还是想键入名称+“html”来访问页面
如果我们以
"www.mywebsite.com/index.php?id=5"
如果管理员创建了具有以下值的页面:
id : 5
name : 'home'
我希望用户可以键入
"www.mywebsite.com/home.html"
没有重定向,因为我希望最后一个url必须仍然出现并成为官方url
谢谢你的回答,
我知道如何将www.mywebsite.com/index.php?id=5重写为www.mywebsite.com/5.html。。。但问题是,首先,我想在前面得到“name”值,在我的示例中,name值是“home”(5=>“home”)。
如何使用url重写引擎访问数据库
多谢各位,
注意。为此使用Apache URL重写。在这个网站上就有这样的例子。你也可以试试官方的 您需要确保数据库对名称强制唯一性,否则会出现问题 编辑
让index.php使用name=参数而不是id参数。您需要确保数据库中的名称字段已编入索引,这样就不会对每个页面请求进行表扫描。使用标准Wordpress安装中的.htaccess文件将所有内容重定向到一个PHP文件。像这样的
<IfModule mod_rewrite.c>
RewriteEngine On
# Base is the URL path of the home directory
RewriteBase /
RewriteRule ^$ /index.php [L]
# Skip real files and directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
</IfModule>
重新启动发动机
#Base是主目录的URL路径
重写基/
重写规则^$/index.php[L]
#跳过真实文件和目录
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则。*/index.php[L]
然后使用$\u SERVER['REQUEST\u URI']
找出用户在寻找什么。如果要使规则更具体,请修改*
,如*\.html
Zakaria
使用Renesis的重写规则后,$\u SERVER['REQUEST\u URI']
将等于'home.html'
尝试以下方法:
谢谢你的回答,我知道如何将www.mywebsite.com/index.php?id=5改写为www.mywebsite.com/5.html。。。但问题是,首先,我想在前面得到“name”值,在我的示例中,name值是“home”(5=>“home”)。如何使用url重写引擎访问我的数据库?您担心的ID太快了。URL重写无法访问您的数据库。PHP将需要这样做。因此,您只需重写所有内容,让PHP获取请求URI(“home.html”)并提取名称(“home”),然后在数据库中查找它。名称必须唯一。感谢您的回答,我知道如何将www.mywebsite.com/index.php?id=5重写为www.mywebsite.com/5.html。。。但问题是,首先,我想在前面得到“name”值,在我的示例中,name值是“home”(5=>“home”)。如何使用url重写引擎访问我的数据库?写完这篇文章后,我看到Zakaria最终接受了一个答案。在这里有更多的PHP帮助并没有什么坏处,我想:)谢谢,蕾妮丝!你提供了一个很好的起点。我也学会了如何用你的答案跳过真实的文件/目录:)+1作为你的答案!我就是这么做的!再次感谢;)
<?php
// clean
$page = mysql_real_escape_string($_SERVER['REQUEST_URI']);
// make query
$query = sprintf("select Page.* from Page where name = '%s'", $page);
// find page ID
if($result = mysql_query($query)){
$page = mysql_fetch_assoc($result);
echo "<pre>", print_r($page, true), "</pre>";
}
?>
Array (
[id] => 5
[name] => 'home.html'
)