我正在尝试使用此/category.php?show=numberID
我想要这样的事:/category/numberID/
例如,我希望:http://example.com/category.php?show=8
成为http://example.com/category/8/
我使用Google搜索并遇到了.htaccess
:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^category/([^/]*)/$ /category.php?show=$1 [L]
这段代码出了什么问题,请不要给我发一些教程链接,因为我看了很多,我只想要你的建议。
答案 0 :(得分:2)
正如评论中所讨论的那样,您的重写规则似乎正常运行,而您的问题是页面样式不再有效。
这背后的问题是因为,就您的浏览器而言,您现在位于目录/category/8/
内。这意味着任何与样式或图像等的相对链接都将被解析为/category/8/
而不是您的站点根目录。例如:
<img src="images/test.jpg" alt="Test" />
<script src="scripts/site.js" type="text/javascript"></script>
将解决:
<img src="/category/8/images/test.jpg" alt="Test" />
<script src="/category/8/scripts/site.js" type="text/javascript"></script>
而不是它们应该在的位置,在站点根目录中。解决这个问题的最简单方法是使所有资源链接都是绝对的,就像这样(通过预先加/
):
<img src="/images/test.jpg" alt="Test" />
<script src="/scripts/site.js" type="text/javascript"></script>
另一个止损解决方案(远不如上面的优先选择)将使用<base .. />
标签,如下所示:
<base href="http://example.com/" />
这将告诉您的浏览器应该针对base
解析所有相关链接。