0

如果说您正在使用流行的:

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L,QSA]

而且您正在尝试使您的 mvc Web 框架处理 404,如果您没有找到指定 URI 的相应视图,您是否只需在 php 应用程序本身中手动发送 404 http 标头,对吗?这是在 Zend/Kohana 和其他框架中完成的方式吗?

另一个问题,假设您重写了整个站点并且您想要设置 301。您会在配置路由的地方(如 Django 中的 urls.py 之类的正则表达式样式)还是在 Virtualhost 指令中执行此操作?

基本上,如果我的 Web 框架正在处理路由,我是否必须修改 VirtualHost 中的 RewriteRules?

4

1 回答 1

1

在 404 上,一般来说,是的。

至于进行永久重定向,我想这取决于上下文。如果我的路由解决方案支持以任何理智的方式进行,我可能会选择它,除非我预计会遇到大规模的扩展问题。

意思是,如果我正在处理繁重的流量,并且有很多静态内容要服务(但不是那么大,以至于我使用除了 apache 作为 Web 服务器之外的任何东西),我最终可能会在 fcgi 下运行 php 以保持 apache 进程精简(并使用比 prefork 更好的 MPM)。在那种世界里,我可能最终会短路 URL 并让 Web 服务器进行重定向。

但即使在这种情况下,也没有理由不在您的路由框架中先完成它。

这样,如果请求通过,事情仍然有效,即使它们变慢了。

于 2009-09-21T05:40:22.390 回答