带有尾随斜杠的mod_rewrite会破坏CSS / IMG / SCRIPTS路径

时间:2011-07-23 14:41:50

标签: php html apache mod-rewrite

我正在尝试将mod_rewrite设置为url中的第一个子目录字符串,以便在类/ db中创建与'jsfiddle.net保存的url类似的功能。该脚本工作正常,并进行重写。

e.g。网址

http://jsfiddle.net/RyEue/

这很好用(加载所有css,脚本等):

http://www.domain.com/787HHJ2

这就是我过去用过的技巧。

问题是在使用上一个斜杠,脚本,css和其他松散路径结束URL时。

http://www.domain.com/787HHJ2/

重写脚本:

DirectoryIndex index.php index.html
Options +FollowSymlinks
RewriteEngine On # Turn on the rewriting engine
#RewriteBase   /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !.
RewriteRule ^.+/?$ index.php [QSA,L]

不确定这是否与Rewritebase有关,我尝试了多种方法。

PS。我试过设置绝对路径(例如src =“/ img / theimage.jpg”),但没有运气。

2 个答案:

答案 0 :(得分:5)

1。确保你有相对于根文件夹链接的css / images / js等(带有前导斜杠):/styles/main.css

2。在当前的一个之前添加其中一个ruls:

# do not touch files with .css/.js/.jpg etc extensions
RewriteRule \.(css|js|jpg|png|gif)$ - [L]

# do not touch any resources in images/css/js folders
RewriteRule ^(images|css|js)/ - [L]

3。清除浏览器缓存并重新启动(有时浏览器可能会在重写规则修复时显示缓存的页面/资源,这会带来很多混乱)。

答案 1 :(得分:0)

尝试转义

RewriteRule ^.+\/?$ index.php [QSA,L]