有什么方法可以在PHP中拥有好看的URL吗? 任何默认的 PHP URL 都如下所示: http://example.com/something/?post=something 但是有没有可能像这样: http://example.com/something/user 是否可以在不使用 .htaccess 的情况下删除 ?post=
这是我一直在处理的一些示例代码,单击帖子后它将访问我的数据库并加载内容:
<?php
if(!isset($_GET['post'])) {
$q = mysql_query("SELECT * FROM posts WHERE postID='something'");
} else {
$id = $_GET['post'];
$id = mysql_real_escape_string($id);
$q = mysql_query("SELECT * FROM posts WHERE postID='$id'");
}
$p = mysql_fetch_object($q);
?>
谢谢你的时间!
要获得干净的 URL,您必须使用mod_rewrite模块,但如果将 url 解析保留到您自己的脚本并且只有一个入口点,则可以最大限度地减少它的使用。看看它在WordPress中是如何制作的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index'.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
因此,如果 URL 中没有请求的实际文件或目录,则每个请求都会重定向到 index.php
,然后由某个内部路由映射脚本解析。
在类似的问题中有一个这样的脚本的例子。
我建议让干净的URL使用默认具有此功能的php框架之一。如果你想使用纯PHP,你应该在你的项目中使用路由器,这意味着你应该编写自己的PHP框架。你曾经使用过任何PHP框架吗?我建议使用laravel或cakephp作为学习php框架的切入点。
您需要在项目中定义路由器和调度程序。路由器提取与 url.in 另一个词相关的函数的 url 和调度程序调用,您应该在项目中嵌入前端控制器设计模式。我建议查看本教程http://www.sitepoint.com/front-controller-pattern-1/