这是我迄今为止:
RewriteRule ^([A-Za-z0-9_]*)/?$ index.php?page=$1 [NC] RewriteRule ^([A-Za-z0-9_]*)/([A-Za-z0-9_]*)/?$ index.php?page=$1/$2 [NC] RewriteRule ^([A-Za-z0-9_]*)/([A-Za-z0-9_]*)/([A-Za-z0-9_]*)/?$ index.php?page=$1/$2/$3 [NC]
我所有的CSS文件都位于/ ssi /中。
网站结构本身是/index.php?page=$whatever
$ whatever有时包括/,所以如果我去/无论/无论2,与我目前的规则,它假定CSS位于/whatever/ssi/*.css。
我希望这一切都有道理。
所以,基本上我只是想写一个条件,说:“如果这是一个CSS文件,不适用这些规则”。
感谢您的帮助,我可以得到:)。
你遇到的问题不是mod_rewrite被应用到css文件,而是你的CSS的路径是相对的。 浏览器只是从正确的相对路径请求css。 你真的有两个选择。
预计你使用Apache mod_rewrite模块,你应该尝试RewriteCond指令。 以下示例从RewriteCond中排除了与RewriteRule指令相符的所有匹配项。 规则基本上是正则表达式。 在我的例子中,排除了所有以favicon.ico开始的所有内容,以及CSS样式表所在的文件夹。
RewriteEngine On RewriteCond $1 !^(favicon\.ico|favicon\.png|media|robots\.txt|crossdomain\.xml|css|js) RewriteRule ^(.*)$ index.php/$1 [L]
进一步阅读: http : //httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond
…它假定CSS位于/whatever/ssi/*.css。
我只是想写一个条件,说:“如果这是一个CSS文件,不适用这些规则”。
这直接转换为
RewriteCond %{REQUEST_URI} !^/whatever/ssi/[^/]+\.css$ RewriteRule ...
我想我的解决方案将是最经验的,但它的工作:
RewriteEngine On RewriteBase / RewriteRule ^([a-z0-9-]+)$ /?page=$1 [NC,L] RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)$ /?page=$1&action=$2 [NC,L]
而且,当然你需要在页面中用斜杠来加上所有的js,css,img目录。 所以css / style.css应该是/css/style.css或者使用绝对url。