如何创建漂亮的URL,但仍然可以使用PHP获取数据

时间:2012-07-14 11:33:56

标签: php url get

我正在尝试创建一个动态页面,该页面将根据URL显示内容,但我想知道是否可以让URL对用户更具可读性。

所以我有一个名为work.php的页面,它将根据URL中传递的ID显示某项工作。所以work.php?project = 1会显示项目1。

有没有办法使用更像www.website.com/work/projectname

的网址来达到同样的效果

3 个答案:

答案 0 :(得分:1)

看看这个:.htaccess and mod_rewrite for apache

然后您可以处理$_SERVER['REQUEST_URI']

中的网址

**附录**

例如我在.htacess文件中使用了类似的内容:

Options +FollowSymLinks
IndexIgnore */*
# Turn on the RewriteEngine
RewriteEngine On
RewriteBase /
#  Rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

那么我将始终登陆index.php,我将解析URI并将其用作我的页面的分发者和路由器。

答案 1 :(得分:1)

如果只是针对特定的一两个脚本,您可以查看Apache重写的工作原理,然后将其显示为www.website.com/work/projectname,并在后端显示为work.php ?项目= 1

Here is an example:
# Turn on URL rewriting
RewriteEngine On
RewriteBase /
RedirectRule ^work.php?project=(.*) http://www.website.com/work/$1

如果这是一个包含大量这些页面的项目,并且您不想编写一堆这些规则,我建议您查看一个MVC框架,如Kohana,Yii等照顾这个以及许多其他事情。

答案 2 :(得分:0)

你必须创建一个名为.htaccess的文件(仅此而已)。 将此文件放在与网站其他文件相同的文件夹中。您可能必须打开“显示隐藏文件”才能在创建文件时查看该文件。

在.htaccess中你可以这样写:

RewriteEngine on    RewriteRule ^ work /([a-zA-Z0-9 _-] +)$ work.php?product = $ 1

此代码将为您提供工作/ 1