Mod_rewrite,试图排除图像和CSS文件

时间:2014-05-29 17:03:25

标签: php css apache .htaccess mod-rewrite

我正在尝试找到一种从我的mod_rewrite权限中排除图像文件和css文件的方法

Options +FollowSymLinks
RewriteEngine On

#SecFilterInheritance Off
ErrorDocument 404 /fourohfour.php

RewriteCond %{HTTP_HOST} ^(myurl\.com)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
RewriteCond %{REQUEST_URI} !\.(?:css|png|jpe?g|gif)$ [NC,OR]  #my attempt at excluding

RewriteRule ^articles/([^/]+)/([^/]+)/?$ /article.php?id=$1&articleTopic=$2 [QSA,L]

问题在于排除行不太准确,我需要帮助

如果我去我的目录中没有包含在我的.htaccess重写中的任何phpscript ..说对于isntance www.myurl.com/articlelinks.php我被重定向到这个:

http://www./articlelinks.php  

使事情进一步复杂化:

如果我去: http://www.myurl.com/articles/1/Dorsal+and+Volar+Intercalated+Segment+Instability+(DISI+and+VISI) CSS文件无法加载

如果我去:

http://www.myurl.com/articles.php?id=1&articleTopic=Dorsal+and+Volar+Intercalated+Segment+Instability+(DISI+and+VISI)正确的文档加载了css和图像

请帮帮忙?

1 个答案:

答案 0 :(得分:1)

你的条件中有OR标志,但之后没有其他条件,这使得mod_rewrite认为:%{REQUEST_URI} !\.(?:css|png|jpe?g|gif)$或(任何)。尝试删除OR

RewriteCond %{REQUEST_URI} !\.(?:css|png|jpe?g|gif)$ [NC]
RewriteRule ^articles/([^/]+)/([^/]+)/?$ /article.php?id=$1&articleTopic=$2 [QSA,L]

您的CSS无法加载的原因可能是因为您在文档中使用了相对URL路径。尝试将这些链接更改为绝对URL路径(以/开头)或将其添加到页面标题中:

<base href="/" />

空白主机问题,不确定为什么会发生这种情况。尝试添加此条件:

RewriteCond %{HTTP_HOST} !^$

以便规则如下:

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^(myurl\.com)$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]