我的.htaccess看起来不错,但它不起作用

时间:2012-12-18 02:52:30

标签: apache .htaccess

我已经把头撞到墙上好几天了,我知道我离我很近但是我不知道如何制作这个.htaccess的作品。

我有这个链接:

http://rebateninja.com?page=reviews&id=B005KMDV9A&review=Shark-Navigator-Professional-Lift-Away-Vacuum-Clea

我想这样称呼:

http://rebateninja.com/reviews/B005KMDV9A/Shark-Navigator-Professional-Lift-Away-Vacuum-Clea

我的htacess有这个:

RewriteEngine On
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)$ index.php?page=$1&id=$2&review=$3 [L]

但该网页上有404个错误,试图指向这样的非现有资源:

http://rebateninja.com/reviews/B005KMDV9A/css/960.css

而不是

http://rebateninja.com/css/960.css

我做错了什么?

4 个答案:

答案 0 :(得分:0)

是的,你的.htaccess是对的......

可以,[L]改为[NC] 你的ocde看起来像这样:

RewriteEngine On 
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)$ index.php?page=$1&id=$2&review=$3 [NC]

希望得到帮助

答案 1 :(得分:0)

查看您的实际网站,您的css文件的链接是css/960.css,因此在当前文件夹中搜索它们,因此http://rebateninja.com/reviews/B005KMDV9A/而不是根目录。

查看此帖子 - https://stackoverflow.com/a/3900018/1791606

答案 2 :(得分:0)

假设你想要:

http://rebateninja.com?key1=val1&key2=val2&key3=val3要改写为:

http://rebateninja.com/val1/val2/val3

一种方法是:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING}  [\w]+=(.*)&[\w]+=(.*)&[\w]+=(.*)
RewriteRule .* /%1/%2/%3? [R=301,L] 

我还假设有一个重定向,所以我添加了它。仅[L]标志不会重定向。

答案 3 :(得分:0)

您的链接是相对的而不是绝对的。这意味着浏览器会尝试猜测基本URI是什么以及浏览器访问的URL何时显示:

http://rebateninja.com/reviews/B005KMDV9A/Shark-Navigator-Professional-Lift-Away-Vacuum-Clea

这意味着内容中的任何相对网址都会附加基础/reviews/B005KMDV9A/,因此如果相对链接如下所示:

<link rel="stylesheet" type="text/css" href="css/960.css">

生成的请求是针对http://rebateninja.com/reviews/B005KMDV9A/css/960.css的。您需要使用绝对链接或添加:

<base href="/">

在您网页的标题中。