【发布时间】:2017-12-10 15:23:49
【问题描述】:
我正在为我的学校作品集制作一个简单的博客。如果我点击一个链接来显示一篇博文,我的网址是 domain.com/post?post_link=First-Post 我已经阅读了数百篇关于更改此网址的 SO 项目,但没有任何效果我……
希望大家看看是什么问题并给出解决方案
我有 3 个文件,blog.php(这里显示了所有帖子)、post.php(这里显示了一篇博文,基于之前页面的帖子倾斜)和一个 .htaccess 文件。
我的博客.php:
<form method="GET" action="post.php">
<input type="hidden" name="post_link" value="<?php echo $post_link;?>">
<input type="submit" name="">
</form>
我的post.php:
$post_link = $_GET["post_link"];
$sql = "SELECT * FROM blogposts WHERE post_link='$post_link'";
$result = mysqli_query($conn, $sql);
if ($result) {
while ($row = mysqli_fetch_array($result)) {
$post_link = $row["post_link"];
}
echo $post_link;
}
我的 .htaccess 文件:
Options FollowSymLinks
RewriteEngine On
RewriteRule ^post/([0-9a-zA-Z]+)$ post.php?post_link=$1
RewriteRule ^post/([0-9a-zA-Z]+)/ post.php?post_link=$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
除了重写url,一切正常,比如显示帖子和显示单个帖子
在blog.php中,我的输入类型隐藏值是正确的。
请帮忙..
丹尼尔
【问题讨论】:
-
你的action已经是post.php,你不需要重写它。您需要在第二条规则上添加 RewriteCond,不包括 post.php
-
当我将 rewriterule 更改为 RewriteRule ^logi/([0-9a-zA-Z]+)$ post.php?post_link=$1 时也没有发生任何事情
标签: php apache .htaccess mod-rewrite