【发布时间】:2012-11-13 12:10:57
【问题描述】:
我正在尝试使用 apache-rewrite 规则来转换以下 URL:
http://localhost/foo/bar/news.php?id=24
转成这种格式:
http://localhost/foo/bar/news/foo-bar
数字 24 是 MySQL 表中随机行的 id,其中还包含 title 和 content 字段。
MariaDB [blog]> select * from articles;
+----+---------+----------+
| id | title | content |
+----+---------+----------+
| 1 | foo-bar | bla bla |
+----+---------+----------+
1 row in set (0.00 sec)
我的.htaccess 中有以下规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
^news/([A_Za_z0_9_]+)$ DIRECTORY/AID/news.php?id=$1 [QSA,L]
我还有一个 php 代码可以生成这样的链接:
$link = "<a href='news.php?id={$row['id']}'></a>";
echo $link;
但是,我无法获得重写规则来将路径更改为所需的最终结果。
【问题讨论】:
-
检查您的 apache 访问日志并查看它正在将其重写为什么,因为它是空白的,这意味着它正在访问 news.php 文件,但有些东西解析不正确。检查日志中的 PHP 错误。
-
你的应用程序的根是网络服务器的根吗?任何子文件夹?试试在第二行添加“RewriteBase /”吧?
-
在xampp控制面板上点击explore然后打开apache文件夹,然后logs文件夹然后查找php错误日志。
-
将 RewriteBase 指向 webapp 的根文件夹。所以它会像 RewriteBase /DIRECTORY/AID
-
mhm,我忘了在末尾添加一个斜杠:RewriteBase /DIRECTORY/AID/ ?
标签: php apache .htaccess url-rewriting