在htaccess中使用斜杠会使css文件无法加载

时间:2015-01-21 20:02:29

标签: php .htaccess

首先,我试图找到这样的答案,就像3晚:)如果有这样的答案,我无法找到或理解。

我的问题很简单:

我想用斜杠拆分get参数。并在我的脚本中全局使用它。

在htaccess中,我写了这个;

RewriteRule ^(.*)/(.*) index.php?param1=$1&param2=$2 [NC,QSA,L]
RewriteRule ^(.*) index.php?param1=$1 [NC,QSA,L]

但是这会阻止(或者像那样)css文件。当浏览器加载页面时,css文件链接看起来正常但浏览器无法访问它们(因为htaccess将目录作为参数)

感谢您的帮助

编辑:我的完整.htaccess:

RewriteEngine on

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^(.*)/(.*) index.php?param1=$1&param2=$2 [NC,QSA,L]
RewriteRule ^(.*) index.php?param1=$1 [NC,QSA,L]

2 个答案:

答案 0 :(得分:2)

确保您的规则看起来像这样。条件仅适用于其后的第一个重写规则。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*) index.php?param1=$1&param2=$2 [NC,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?param1=$1 [NC,QSA,L]

还要为CSS文件使用绝对路径,或在文件路径前放置/

答案 1 :(得分:0)

将此置于规则之上:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

它检查文件是否已经存在(例如CSS文件),因此不会尝试重写或重定向它们。