我正在尝试制作一个动态页面,它将根据 URL 显示内容,但我想知道是否可以使 URL 对用户更具可读性。
所以我有一个名为 work.php 的页面,它将根据 URL 中传递的 ID 显示某项工作。所以 work.php?project=1 会显示项目 1。
有没有办法使用更像 www.website.com/work/projectname 的 URL 来实现相同的效果
如果仅针对一个或两个特定脚本,您可以查看 Apache Rewrites 的工作方式,这将使其显示为 www.website.com/work/projectname 并且在后端表现得好像它是 work.php?project= 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 等来处理这个问题以及许多其他的东西给你。
看看这个:.htaccess 和 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 的位置,并将其用作我的页面的分发器和路由器。
您必须创建一个名为 .htaccess 的文件(仅此而已)。将此文件与网站的其他文件放在同一文件夹中。您可能必须打开“显示隐藏文件”才能在创建文件时看到它。
在 .htaccess 中你可以这样写:
RewriteRule 上的 RewriteEngine ^work/([a-zA-Z0-9_-]+)$ work.php?product=$1
此代码将为您提供工作/1