我的index.php
中有news.php
和.htaccess
以及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();
现在,这是.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
错误
下面是我得到的错误的图像。
答案 0 :(得分: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]
答案 1 :(得分:1)
在AID /文件夹中以及
中的网址获取数据index.php
&amp;news.php
问题在于,我不知道如何从news.php
htaccess文件需要位于文档根目录中。当请求URI的格式为:
/news/1234/something-something
apache用于解决是否应该应用覆盖(即htaccess文件中的内容)的命令首先要查看这是否是目录/news/1234/something-something
,如果是,那么是否有htaccess文件。这不是一个目录,所以apache继续前进。如果/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]
答案 2 :(得分:1)
听起来您希望能够以$_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]