mod_rewrite问题和PHP

时间:2015-09-01 15:27:10

标签: php apache .htaccess mod-rewrite

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

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

之类的内容

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

1 个答案:

答案 0 :(得分:2)

使用:

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

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

<base href="/">

OR

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

修复相对css和js链接