Php 正在使用htaccess从URL转发检索GET[]信息

Php 正在使用htaccess从URL转发检索GET[]信息,php,apache,url-rewriting,get,Php,Apache,Url Rewriting,Get,我的localhost/DIRECTORY/AID/ 我基本上是在尝试从index.php发送/接收数据到news.php 这是index.php中的一个函数,它从数据库查询中创建一个链接,并回显一篇文章的标题 function news_preview() { $query = "SELECT * FROM updates ORDER BY update_id DESC LIMIT 5 "; $result = mysql_query($query) or die(mysql

我的
localhost/DIRECTORY/AID/
我基本上是在尝试从
index.php
发送/接收数据到
news.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();
现在,我们来谈谈这个问题。基本上,当我点击链接时(由
news\u preview()
生成) 如
index.php
所示,我在news.php页面上得到的一切都是虚无。但是,可能是因为我试图使用
$\u GET['title']
尽管如此,我不确定这是否是我们检索数据的方式。但是,这些链接将我带到
http://localhost/news/46/This_is_news_title
这是完美的,但我得到的
对象未找到
错误

下面是我得到的错误图像


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

htaccess文件需要位于文档根目录中。当请求URI的格式为:

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

/DIRECTORY/AID/
目录永远不会出现在这里,除非您的文档根所在的位置。如果
目录/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]

将此代码放入
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]

听起来您希望能够以
$\u GET['title']
的形式读取URL的最后一部分,但是您的htaccess规则没有将其添加到查询字符串中

试着改变

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


您确定您的htaccess文件正在应用吗?如果你有一堆胡言乱语,你会得到一个500服务器错误吗?htaccess文件在哪里?在AID/文件夹和
index.php
&
news.php
中,问题是我不知道如何从
news.php
中的url获取数据。好的,你能试试吗:
http://localhost/DIRECTORY/AID/news.php?id=46
?。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,。可能重复:我更改了代码,但没有更改。下面是目录列表的屏幕截图。我想,这可能是我需要知道的链接的问题,我如何从新闻页面的url获取数据?@htaccess文件需要在您的文档根目录中。感谢您的努力。问题解决了。我已将.htaccess文件与索引filestill对象放置在一起,但未找到错误。news.php应该是空的吗?我编辑了我的答案,上面将转到
htdocs/.htaccess
(删除前面的.htaccess)。但是,您必须进行
http://localhost/DIRECTORY/AID/news.php?id=46
工作或告诉我您是如何加载
news.php
URL的?嗯,这很有希望。我按照你的要求做了,当我点击链接时没有任何错误,只是一个空白页面。url已更改为
http://localhost/news/46/Third_news_test
这很好,没有错误。但是,还是没什么。我很困惑,我在index.php中有脚本,但我需要在news.php中显示新闻,那么news.php中实际需要什么呢?我花了两周时间和两篇帖子()来解决这个问题。终于完成了。感谢上帝。我现在明白了。这一切都是由于将.htaccess文件放在了错误的文件夹中。非常感谢你的接受。htaccess将直接进入服务器的
$DOCUMENT\u ROOT
(可能是htdocs目录)。好的,值得一试。我想也许你的系统正试图根据标题和IDS来找到它。谢谢你的努力,+10
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]