我正在研究Cloud9 IDE上托管的项目。我设置了一组简单的mod_rewrite规则,但是在c9的新版本发布后它们不再起作用。我花了很长时间才弄清楚这些规则(我只是个新手)对这些规则为什么不再起作用感到困惑(AFAIK,新的c9版本应该不会影响mod_rewrite规则)。
这是规则(位于根目录中.htaccess
)
RewriteEngine on
Options FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_URI} ^/css/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/img/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/js/.*$
RewriteCond Astralis/resources%{REQUEST_URI} -f
RewriteRule ^(.+)$ Astralis/resources/$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
目标非常简单...所有去往/css/...
/img/...
或/js/...
应在其中的关联文件提供服务的所有请求Astralis/resources
(在检查文件是否存在之后)。否则,将其余流量重定向到index.php。
我遇到的问题是,所有对资源(css,img,js)的请求都返回404。如果我将/ css,/ img和/ js文件夹从Astralis / resources内移回根目录,则所有资源都会正确加载。在c9的新版本之后,开始出现此问题,而对.htaccess文件,代码库或目录结构没有任何更改。
有什么线索吗?我该如何调试此类内容?编写mod_rewrite规则的任何一般性提示/技巧也将不胜感激。谢谢。
由于Apache需要使用文件的完整路径才能返回true,因此-f
您需要%{DOCUMENT_ROOT}/
在文件路径之前使用。
有这种方式:
RewriteEngine on
Options FollowSymLinks
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(css|img|js)/ [NC]
RewriteCond %{DOCUMENT_ROOT}/Astralis/resources%{REQUEST_URI} -f
RewriteRule ^(.+)$ Astralis/resources/$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句