2013-05-14 31 views
-3

我看到很多类似的问题,但我已经遵循了我从中获得的每个解决方案,而且似乎无法让它在没有冲突的情况下运行。css和图像冲突。 htaccess rewriterule

HTML CSS来电:

<head> 
<base href="http://localhost/smartwavedev.sw_apiwebtool/" /> 
<link rel="stylesheet" href="assets/css/main.css" type="text/css"> 
<link rel="stylesheet" href="assets/css/login.css" type="text/css"> 
<link rel="stylesheet" href="assets/css/dashboard.css" type="text/css"> 
<link rel="stylesheet" href="assets/css/bootstrap/bootstrap.min.css" type="text/css"> 
<link rel="stylesheet" href="assets/css/docs.css" type="text/css"> 
</head> 

的.htaccess

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/]+)$ $1.php 
RewriteRule ^([^/]+)/([^/]+)$ $1.php?page=$2 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ $1.php?page=$2&nav=$3 

感谢您的帮助!

+1

你忘了问一个问题。 “它不能没有冲突地运行”不是一个 - 什么冲突,哪里出了问题,你怀疑问题是什么? – 2013-05-14 07:01:04

+0

无法访问css和图像文件。 – 2013-05-14 07:03:22

回答

1

这一切的条件首先是畸形:

RewriteCond %{REQUEST_FILENAME}\.php -f 

应该仅仅是:

RewriteCond %{REQUEST_FILENAME} !-f 

现在,它会触发上的所有文件。接下来,RewriteCond只会匹配后面的第一个RewriteRule。所以第三条规则与3个元素仍然匹配(并因此阻止)你的CSS文件。您需要重复所有规则的RewriteCond行,或实施更好的解决方案。为了您的具体情况,我真的建议重写下降的整个概念,取而代之的是:

FallbackResource index.php 

然后在index.php文件解析$_SERVER['REQUEST_URI']

+0

谢谢。我通过在所有规则之前重复rewritecond来解决它。 – 2013-05-14 07:12:22