【发布时间】:2015-08-12 12:08:30
【问题描述】:
我不太擅长 .htaccess,所以我不知道它是如何工作的,我有一个网站和我的网站链接,就像这样:mysite.com/pagee.php?menu_id=1 我使用这个 .htaccess 代码:
<IfModule mod_rewrite.c>
RewriteEngine on
# 1-level
RewriteRule ^home/{0,1}$ pagee.php?menu_id=1 [QSA,L]
</IfModule>
它就是这样工作的:mysite.com/home/
但我的问题是我有很多类似的页面:
mysite.com/pagee.php?menu_id=2,mysite.com/pagee.php?menu_id=3, mysite.com/pagee.php?menu_id=4, mysite.com/pagee.php?menu_id=5, mysite.com/pagee.php?menu_id=6,
而我的 pagee.php 代码是:
<?php
require_once('config2.php');
$menu_id = intval($_GET['menu_id']);
$query = "SELECT * FROM menu WHERE `menu_id`=$menu_id";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
echo '<h1>'.$row['mname'].'</h1>';
}
?>
pagee.php 与 mysql 配合使用
那么当代码在.htaccess 中工作时如何像这样:
<IfModule mod_rewrite.c>
RewriteEngine on
# 1-level
<?php
$query = "SELECT * FROM menu WHERE `menu_id`=$menu_id";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
$menu_id=$row['menu_id'];
$linkname=$row['linkname'];
echo 'RewriteRule ^'.$linkname.'/{0,1}$ pagee.php?menu_id='$menu_id' [QSA,L]';
} ?>
</IfModule>
【问题讨论】:
-
请stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's not as hard as you think。 -
尝试将所有调用重定向到 pagee.php 的解决方案。然后验证对您的数据库表的请求。如果有效,继续,如果没有找到,404 header
-
你想要一个类似 domain/menu/1 的链接吗?
-
@Starkeen:不,我不会像 domain.com/home 那样做。
-
@Starkeen:先生,在我的 mysql 数据库中,我失去了生成的链接,但我的 .htaccess 文件没有像我的 pagee.php 那样自动生成?
标签: php mysql apache .htaccess mod-rewrite