mod_rewrite问题和PHP

我正在尝试转换我的应用链接,以便像这样的链接:

http://localhost/index.php?id=13&category=Uncategorized&title=just-a-link

转换为这个:

http://localhost/13/Uncategorized/just-a-test

到目前为止我能够使用:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$/index.php?id=$1&category=$2&title=$3 [QSA,L]

但是它会完全断开与css和其他文件的链接,因为它会将每个带有查询的请求重定向到index.php

所以我稍微改了一下,以便它只在第一个查询是一个数字时运行:

RewriteEngine On
RewriteRule ^([0-9]*)/([^/]*)/([^/]*)$/index.php?id=$1&category=$2&title=$3 [QSA,L]

这个没有破坏css和js文件,但是当你去链接例如http:// localhost / 13 / cat / test然后尝试去另一个链接,如http:// localhost / 19 / Uncategorized / something通过在上一页内点击它,它将改为将你重定向到http:// localhost / 13 / Uncategorized / 19 / Uncategorized / just-a-test

如何在没有任何这些奇怪的副作用的情况下实现我所描述的内容?

最佳答案 使用 :

RewriteEngine On
RewriteRule ^([0-9]+)/([^/.]+)/([^/.]+)/?$/index.php?id=$1&category=$2&title=$3 [QSA,L]

并将此代码添加到您的html< header>:

<base href="/">

要么

<base href="http://www.domain.com/">

修复相对的css和js链接

点赞