-1

我正在尝试使用这样的 URL 优化一个站点/category.php?show=numberID

我想要这样的东西:/category/numberID/

例如我想:http://example.com/category.php?show=8成为http://example.com/category/8/

我用谷歌搜索并遇到了这个.htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^category/([^/]*)/$ /category.php?show=$1 [L]

这段代码有什么问题,请不要给我发一些教程链接,因为我看了很多,我只是想要你的建议。

4

1 回答 1

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>

而不是它们应该在的位置,在站点根目录中。解决此问题的最简单方法是使所有资源链接成为绝对链接,如下所示(通过添加 a /):

<img src="/images/test.jpg" alt="Test" />
<script src="/scripts/site.js" type="text/javascript"></script>

另一个权宜之计的解决方案(不如上述首选)是使用<base .. />标签,如下所示:

<base href="http://example.com/" />

这将告诉您的浏览器所有相关链接都应该针对它进行解析base

于 2012-12-21T10:25:54.507 回答