我基本上想要重定向所有请求到index.php不重要什么,除了那些与某些REQUEST_URI
。那些看起来像图像文件的请求应该被检查,并且如果它们位于public/
文件夹(或任何深度的任何子文件夹)下,则应该检查它们,如果它们是应该提供的,则应该停止重写过程,例如:.jpg
或.png
这里!如果不是,我想重定向到public/errors/image-not-found.png
的默认图像并终止重写过程。其他例外是以.js, .css, .html
或.swf
结尾的文件。如果它们位于public/
文件夹或任何其他子文件夹下,则它们也应该被提供。如果不是,则应发回一个简单的404-Not found
。在最后的重写过程中,无论哪种情况都需要停止。 任何其他请求应重定向到index.php
并附加为query string
。 (即使请求指向一个目录或文件不在的条件下上述,但存在的,如:www.xyz.com/library/Database.php
- >www.xyz.com/index.php?url=library/Database.php
)Apache重写模块,复杂的规则
我有一半的措施解决:
这是我如何重定向一切index.php:
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
你的要求看起来不必要的复杂,并且将无尽的网址数量同步到相同的现有图像或样式表或html文件中,可能会导致重复的内容警告和在搜索引擎中受到惩罚。 “它位于x或**任何随机子文件夹**下”是一种接近我认为的错误方式。 – Sumurai8