mod_rewrite不适用于斜杠& css分手了

时间:2010-10-10 15:59:07

标签: php apache mod-rewrite

我只有一个带有index.php的根目录以及两个文件夹img和css。 我引用此文件夹中的文件,如: src =“img / path.png”,即相对于根目录。

前几天我有一些mod_rewrite问题&这是有人给我的东西,除了尾随斜线和css / img分开外,似乎很好用

RewriteRule ^ $ index.php?page = 1 [L]

RewriteRule ^([0-9] +)/?$ index.php?page = $ 1 [L]

RewriteRule ^([A-Za-z] +)/?$ index.php?category = $ 1& page = 1 [L]

RewriteRule ^([A-Za-z] +)/([0-9] +)/?$ index.php?category = $ 1& page = $ 2 [L]

这就是困扰我的事情:

使用Rule1:

www.example.com更改为www.example.com/index.php?page=1这很棒 另外www.example.com/还有一些如何更改www.example.com再次很棒

使用Rule2:

www.example.com/2更改为www.example.com/index.php?page=2就像我想要的那样 但是使用www.example.com/2/(TRAILING SLASH)也会检索page = 2,但不知何故,img和css会分开。 我猜这个问题是将url视为目录结构,然后它无法在那里找到img和css文件夹。

使用规则3:

www.example.com/Football再次更改为www.example.com/index.php?category=Football&page=1,就像我想要的那样 但www.example.com/Football/(TRAILING SLASH)遇到了与img和css分道扬with的同样问题

使用规则4:

www.www.example.com/Football/2即使没有css和img上的尾部斜线细分,但页面可以正确检索页面和类别。

如何在不使用html中的绝对路径的情况下更正此问题。 请告知尾随斜线问题。

3 个答案:

答案 0 :(得分:2)

你能否使用亲戚引用你的images / css但是以/?

开头
/images/blah.jpg
/css/style.css

答案 1 :(得分:0)

您可以添加以下规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt|favicon.ico)
# Other rules here

我们的想法是避免现有文件或目录的重写案例。

答案 2 :(得分:0)

使用尾部斜杠,路径将被解释为目录。无论您在何处包含图像,css文件等,都必须更改路径。假设您在 img 文件夹中有图像,您可能在css中使用它:

background: url(img/image.png)...

将其更改为:

background: url(/img/image.png) ...

对于您引用图像或其他路径的所有地方也是如此。使用以“/”开头的路径表示您正在从根目录中搜索。您正在使用的规则是我正在使用的规则,并且没有任何问题。实际上,我发现使用起始“/”构建路径更容易。

就像最后一个例子一样,如果您有: mysite.com/home 并且您有<img src="img/image.png" />,则会在 mysite.com/img/image中搜索该图像。 png 这可能是你想要的。

但如果您有 mysite.com/home / <img src="img/image.png" />,则该图片必须位于 mysite.com/home/img/image.png 中不是你想要的,因此使用<img src="/img/image.png" />将是你的解决方案。