我有一个页面,其中包含一个查询字符串的链接,该字符串会加载另一个包含查询结果的页面。
a href="news-detail.php?nrf=<?php echo $ntitle; ?>"><?php echo "<img src=newsimgs/thumbs/".$nphoto1.">" ?></a>
现在,当加载新详细信息页面时,我会将网址设为
https://www.xyzee.org/news-detail.php?nrf=Testing
但我希望它加载为
https://www.xyzee.org/news-detail/Testing
我已经在网上查找了关于mod_rewrite的教程,并尝试了不同的样本,但由于我理解的原因,我无法让它工作。 我试过的示例代码之一是
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news-detail/([A-Za-z0-9-]+) news-detail.php?nrf=$1 [NC]
</IfModule>
当我点击加载详细信息页面的链接时,这应该有效,但不是。该页面仍会加载 https://www.xyzee.org/news-detail.php?nrf=Testing
链接当我直接在浏览器中输入https://www.xyzee.org/news-detail/Testing时,页面实际加载但是到css,js,images等的链接都被破坏了。 我已经尝试了很多方法来解决这个问题,但似乎无法找到解决方案。 是查询字符串的链接是问题还是别的,我只是不知道。 任何帮助将非常感激。提前谢谢。
答案 0 :(得分:1)
使用mod_rewrite不会替换文档中的链接。您必须在自己的代码中执行此操作:
<a href="news-detail/<?php echo $ntitle; ?>"><?php echo "<img src=newsimgs/thumbs/".$nphoto1.">" ?></a>
之后,您还必须更新外部资源的路径,因为被调用页面现在位于子目录中。因此,您可以将../
附加到详细信息页面内所有包含的客户端资源。
为了防止这种情况,更好的方法是使用绝对路径或将<base />
添加到页面的标题中。