我正在清理我的网址。
说我有一个网址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]
答案 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/ />
现在我想......为什么我的思绪花了这么长时间才想到这个:)