重写规则不起作用&导致CSS错误

时间:2015-10-12 09:04:56

标签: php css regex .htaccess mod-rewrite

我想使用.htaccess使用RewriteRule,但我遇到了一些问题。我使用以下方法测试了规则:

/var/data/file/2014/05/01/55122/store/9-83393393
/var/data/file/2014/05/01/55152/store/9-833993323
/var/data/file/2014/05/01/66122/store/9-83332e4233
/var/data/file/2014/05/02/65122/store/9-833993885

当我访问RewriteRule ^newpage articles.php [NC,L] 时,我显示blog.local.com/newpage,所以我知道我的htaccess工作正常。

然而,当我使用:

articles.php

访问DirectoryIndex articles.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^articles/([0-9a-zA-Z_-]+)/([0-9]+) articles.php?cat=$1&currentpage=$2 [NC,L] ,我显示了第一篇文章页面,但它没有任何CSS样式显示。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要关闭MultiViews选项。

Options -MultiViews
DirectoryIndex articles.php
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^articles/([\w-]+)/([0-9]+)/?$ articles.php?cat=$1&currentpage=$2 [NC,L,QSA]

MultiViews使用选项Apache's content negotiation modulemod_rewrite之前运行,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php

另外,对于修复css / js问题,您可以在页面的HTML <head>部分下方添加:

<base href="/" />

以便从该基本网址解析每个相对网址,而不是从当前网页的网址解析。