2010-10-10 32 views
1

我只有一个带有index.php的根目录以及两个文件夹img和css。 我指的是这个文件夹中的文件,例如: src =“img/path.png”,即相对于根目录。mod_rewrite不能很好地跟踪斜线和css分隔

有一天,我遇到了一些问题的mod_rewrite这&是什么人给了我,这似乎WROK除了尾随斜线和CSS/IMG分崩离析

重写规则^ $的index.php?页= 1 [精L]

重写规则^([0-9] +)/ $的index.php?页面1 = $ [L]

重写规则^([A-ZA-Z] +)/?$索引。 php?category = $ 1 & page = 1 [L]

RewriteRule ^([A-Za-z] +) /([0-9] +)/ $的index.php类别1 & = $页= $ 16 [L]

这是什么困扰着我:??

使用规则1:

WWW。 example.com更改为www.example.com/index.php?page=1这很棒 也www.example.com/一些如何更改www.example.com这又是一个伟大的

使用规则2:

www.example.com/2更改为www.example.com/index.php?page=2像w帽子我想 但使用www.example.com/2/(TRAILING SLASH)也检索页面= 2,但不知何故img和CSS分开。 我猜测问题是与被视为目录结构的URL,然后它不能找到IMG和CSS文件夹那里。

使用规则3:

www.example.com/Football更改www.example.com/index.php?category=Football &页面= 1再次像什么,我想 但www.example。 COM /足球/(尾部的斜杠)从同一问题的困扰与IMG和CSS分崩离析

使用规则4:

www.www.example.com/Football/2即使没有CSS结尾的斜线breaksdown然后img页面可以正确地检索页面和类别。

如何更正此问题,而无需在我的html中使用绝对路径。 请告知附带的斜线问题。

+0

ErrorDocument 404 index.php这似乎不适用于我。有任何想法吗? – Gaurav 2010-10-10 16:26:08

回答

2

你可以不引用你的图像/使用相对的CSS,但开始与/?

/images/blah.jpg 
/css/style.css 
+0

是的,应该这样做。 /images/blah.jpg意味着从根目录看,对吧? – Gaurav 2010-10-10 16:09:05

+0

是的。它会从主机域 – methodin 2010-10-10 16:34:59

0

你可以添加如下规则:

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

这样做是为了避免对现有的文件或目录的重写情况。

+0

行,所以我加入 的RewriteCond%{} REQUEST_FILENAME加载!-f 的RewriteCond%{} REQUEST_FILENAME!-d 的RewriteCond%{HTTP_HOST}!^ \本地主机$ [NC] RewriteRule ^(。+)/ $ http://%{HTTP_HOST}/$ 1 [R = 301,L] 这意味着尾部斜线不再是问题。但是我没有得到你想要在这里做什么? – Gaurav 2010-10-10 16:10:23

+0

顺便说一句如何在评论中添加代码作为单独的片段? – Gaurav 2010-10-10 16:13:02

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" />将是解决办法为你。