-1

我的文件夹中有一个 index.phpnews.php.htaccess文件,localhost/DIRECTORY/AID/ 我基本上是在尝试发送/接收数据index.phpnews.php

这是 内部的一个函数index.php,它从数据库查询中创建一个链接,并回显出一篇文章的标题。

function news_preview() {
    $query = "SELECT * FROM updates ORDER BY update_id DESC LIMIT 5  ";
    $result = mysql_query($query) or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
        $url = "/news/$row[update_id]/" . preg_replace('/[^a-zA-Z0-9-_]/', '_',
            $row['update_title']);
        echo "<a href=\"$url\">  " . substr($row['update_title'], 0, 26) . "...</a><br/>";
    }
}

echo news_preview();

现在,这就是它的.htaccess样子

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ DIRECTORY/AID/news.php?id=$1 [QSA,L]

现在,问题。基本上,当我单击 中显示的链接(由 生成news_preview())时index.php,我在news.php页面中得到的只是什么。但是,可能是因为我正在尝试使用 $_GET['title']虽然,我不确定这是否是我们检索数据的方式。但是,链接带我去http://localhost/news/46/This_is_news_title 哪个是完美的,但我收到了Object Not Found错误

下面是我得到的错误的图像。

在此处输入图像描述

4

3 回答 3

4

将此代码放在htdocs/.htaccess

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteBase /

RewriteRule ^news/([0-9]+)/.*$ /DIRECTORY/AID/news.php?id=$1 [QSA,L,NC]
于 2012-12-10T20:05:16.563 回答
1

在 AID/ 文件夹中连同index.php&news.php问题,是我不知道如何从 url 中获取数据news.php

htaccess 文件需要位于您的文档根目录中。当请求 URI 采用以下形式时:

/news/1234/something-something

apache 用于解决是否应应用覆盖(即 htaccess 文件中的内容)的顺序是首先查看这是否是一个目录/news/1234/something-something,如果是,则其中是否有一个 htaccess 文件。那不是一个目录,所以 apache 继续前进。if/news/1234是一个目录,如果是,看看里面是否有htaccess文件;因为不是,所以什么也没有发生。然后apache检查是否/news是一个目录,如果是,检查htaccess;它也不是一个目录,所以什么也没有发生。最后,apache 检查文档根目录/以查看是否有 htaccess。由于文档根目录一个目录,因此您需要在其中放置规则。

/DIRECTORY/AID/目录永远不会在这里混合,除非那实际上是您的文档根目录所在的位置。如果DIRECTORY/AID/是您的文档根目录,例如 URI/直接映射到该目录,那么您需要将规则更改为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ news.php?id=$1 [QSA,L]
于 2012-12-10T19:55:16.297 回答
1

听起来您希望能够将 URL 的最后一部分读取为$_GET['title'],但您的 htaccess 规则并未将其添加到查询字符串中。

尝试改变

RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ DIRECTORY/AID/news.php?id=$1 [QSA,L]

RewriteRule ^news/([0-9]+)/([A-Za-z0-9_-]+)$ DIRECTORY/AID/news.php?id=$1&title=$2 [QSA,L]
于 2012-12-10T20:06:19.953 回答