【发布时间】:2014-08-07 16:23:01
【问题描述】:
我正在处理一个托管在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。如果我将 Astralis/resources 中的 /css、/img 和 /js 文件夹移回根目录,则所有资源都会正确加载。这个问题在 c9 的新版本之后开始出现,没有更改 .htaccess 文件、代码库或目录结构。
关于发生了什么的任何线索?我该如何调试这种东西?任何编写 mod_rewrite 规则的一般提示/技巧也将不胜感激。谢谢。
【问题讨论】:
标签: .htaccess mod-rewrite cloud9-ide