Apache重写不包括资产目录

时间:2010-04-23 12:10:46

标签: php apache mod-rewrite url-routing

我正在编写一个迷你MVC应用程序。应用程序架构:

动作/    模板/      现场/      应用程序/    风格/    图片/    脚本/

到目前为止,我已经让控制器正常工作,接收所有请求。但是,javascript文件未在浏览器中正确呈现;当我尝试在浏览器中加载文件时,我收到了404 Not Found。

这是我在vhost文件中的当前目录配置:

<Directory "/path/to/apps/ecatalogue">
DirectoryIndex index.php
RewriteEngine On
RewriteBase /apps/ecatalogue
RewriteRule ^scripts/(.*) - [NC,L] <--- Rule not working
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [NC,L,QSA]
</Directory>

我可以确认其他一切有效;我只需要apache忽略脚本中的任何内容,这样文件就可以正常加载而不需要由控制器处理。

感谢您的帮助。

更新I:为了完成而添加了目录标记。

1 个答案:

答案 0 :(得分:4)

我在这里切换了一些东西 - 这是基于我运行的每个MVC应用程序使用的重写规则。它来自Zend Framework文档中的一些建议。

DirectoryIndex index.php

RewriteEngine On
RewriteBase /apps/ecatalogue

# If it's a file/directory/symlink, serve it.
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^.*$ - [NC,L]

# Otherwise let's go MVC
RewriteRule ^.*$ index.php [NC,L]