我想使用.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¤tpage=$2 [NC,L]
,我显示了第一篇文章页面,但它没有任何CSS样式显示。任何人都可以帮我解决这个问题吗?
答案 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¤tpage=$2 [NC,L,QSA]
MultiViews
使用选项Apache's content negotiation module
在 mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会投放/file.php
。
另外,对于修复css / js问题,您可以在页面的HTML <head>
部分下方添加:
<base href="/" />
以便从该基本网址解析每个相对网址,而不是从当前网页的网址解析。