【问题标题】:passing a variable without ?= in php (possibly .htaccess)在 php 中传递不带 ?= 的变量(可能是 .htaccess)
【发布时间】:2025-12-13 01:15:02
【问题描述】:

我正在用 php/mysql 制作一个带有自定义 cms 的网站。

它的布局如下:

MYSQL 数据库 表名 id、标题、描述、关键字、内容

CM 连接DB,列出Table的内容 获取身份证 编辑标题、描述、关键字、内容 保存回数据库

网站 连接到数据库,其中 title=home

php页面示例

<?php //connect to database ?>
<html>
<title><?php echo $title;?></title>
<meta name="description" content="<?php echo $description; ?>" >
<meta name="keywords" content="<?php echo $keywords; ?>" >
<body>
<?php echo $content; ?>
</body>
<?php include_once("footer.php"); ?>

所以想法是连接到页面并提供标题,然后连接到数据库,从表中检索适当的行并显示页面,例如:

http://www.mysite.com/index.php?title=home

将显示网站的主页。

有没有办法从 url 中删除 index.php?title= 并仍然传递变量,所以用户会访问http://www.mysite.com/home

我认为可以通过编辑 .htaccess 文件,但我不确定?

【问题讨论】:

  • 使用 mod_rewrite,有一个look
  • 举个例子,CodeIgniter 通过它的URI Routing 使用这样的 URL。

标签: php mysql html .htaccess


【解决方案1】:

您可以使用 mod_rewrite 来完成。把它放在你的 .htaccess 中:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?title=$1 [L]

这些行会将http://www.mysite.com/varhttp://www.mysite.com/var/ 等每个网址重定向到http://www.mysite.cm/index.php?title=var

此重定向将是透明的。

我建议您查看一些有关 URL 重写和 mod_rewrite 的文档,以最好地理解这些行,并能够自己制作。

【讨论】: