使用MOD_REWRITE后,是否需要修改网页中的链接?

时间:2013-01-31 17:24:21

标签: php .htaccess

我正在清理我的网址。

说我有一个网址http://www.example.com/index.php?id=12345&name=some-name

我刚刚使用mod_rewrite

将其更改为更好看

http://www.example.com/blog/12345/some-name

现在痛苦是页面index.php没有加载任何图像,css文件和锚链接都被破坏了。

我的图片位置为http://www.example.com/images/12345/some-image.jpg

我在我的网站上使用了相对路径。

现在我需要更改所有页面上的链接吗? .htaccess可以为我做一些技巧吗?请帮忙。

这是我的.htaccess -

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^blog/(.*)/$ index.php?id=$1 [NC,L]

RewriteRule ^blog/(.*)/(.*)$ index.php?id=$1&name=$2 [NC,L]

3 个答案:

答案 0 :(得分:2)

看看我添加的第二行。

RewriteEngine On
RewriteRule \.(css|jpe?g|gif|png|js|css|htm|html|mp3|wav|ico)$ - [L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.*)/$ index.php?id=$1 [NC,L]
RewriteRule ^blog/(.*)/(.*)$ index.php?id=$1&name=$2 [NC,L]

这基本上说如果你在URL中看到这个扩展名,只需将其直接传递给文件。

答案 1 :(得分:1)

RewriteCond仅适用于下一条规则,而不适用于以下所有规则。您的第二条规则不是要避免存在的目录和文件。试试这个

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.*)/$ index.php?id=$1 [NC,L]


RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.*)/(.*)$ index.php?id=$1&name=$2 [NC,L]

答案 2 :(得分:1)

啊...!

我刚在标题中添加了这个小行,它解决了我所有的问题:)

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

现在我想......为什么我的思绪花了这么长时间才想到这个:)