重写URL不会执行任何操作

时间:2017-07-06 14:36:11

标签: php apache .htaccess mod-rewrite

我正在为我的学校投资组合制作一个简单的博客。如果我点击链接显示博客帖子,我的网址是 domain.com/post?post_link=First-Post 我已经阅读了有关更改此网址的SO项目,但没有任何效果我...

我希望有人能看到问题所在并提出解决方案

我有3个文件,blog.php(这里显示的是所有帖子),post.php(这是一个博文显示,基于之前页面的帖子)和.htaccess文件。

我的blog.php:

<form method="GET" action="post.php">
                    <input type="hidden" name="post_link" value="<?php echo $post_link;?>">
                    <input type="submit" name="">
                </form>

我的帖子.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

除了重写网址外,一切正常,比如显示帖子并显示单个帖子

在blog.php中,我的输入类型隐藏值是正确的。

请帮助..

丹尼尔

1 个答案:

答案 0 :(得分:0)

将您的操作更改为post

<form method="GET" action="post">

结果网址应为localhost/takast/post?post_link=First-Post

此规则将匹配此规则,但您需要保留查询字符串[QSA]

完成.htaccess:

Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [QSA]