脚本宝典收集整理的这篇文章主要介绍了php – Apache URL重写不正常,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
进入这种格式:
数字24是MySQL表中随机行的id,其中还包含标题和内容字段.
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]
$link = "<a href='news.PHP?id={$row['id']}'></a>"; echo $link;
但是,我无法获得重写规则来将路径更改为所需的最终结果.
function news_preview() { $query = "SELECT * From news ORDER BY id DESC LIMIT 5 "; $result = MysqL_query($query) or die(MysqL_error()); while($row=MysqL_fetch_array($result)) { echo "<a href=\"/news/$row[id]\"> ". substr($row['title'],26)."...</a><br/>".; } }
将生成像http:// localhost / news / 24这样的URL
请注意,我从网址中删除了/ DIRECTORY / AID,因为htaccess建议你想要它是url,而不是你在文中所说的.
但现在转到http:// localhost / news / this_is_article_title类型的url.因为this_is_article_title和id 24之间没有相关性,所以实现这一点的唯一方法是将id添加到url中,或者让PHP在数据库中查找带有此标题的新闻文章.
然而,最后一个解决方案存在一些问题,因为您不能仅仅使用网址中的标题.你必须逃避角色.此外,您还必须为数据库中的标题行添加索引,以获得更好的性能.
HTTP://本地主机/新闻/ 24 / this_is_article_title
首先是PHP部分
function news_PReview() { $query = "SELECT * FROM news ORDER BY id DESC LIMIT 5 "; $result = MysqL_query($query) or die(MysqL_error()); while($row=MysqL_fetch_array($result)) { $url = "/news/$row[id]/".preg_replace('/[^a-zA-Z0-9-_]/','_',$row['title']); echo "<a href=\"$url\"> ". substr($row['title'],26)."...</a><br/>".; } }
接下来是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]
我认为应该这样做.
以上是脚本宝典为你收集整理的php – Apache URL重写不正常全部内容,希望文章能够帮你解决php – Apache URL重写不正常所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。