php – 从htaccess重写规则中排除文件
我在
PHP应用程序中有一个htaccess重写设置,用于通过bootstrapper文件路由文件.从本质上讲,目标是获取一个URL,例如www.domain.com/view/key/value/key/value,其中视图将相应地路由,并且键/值对将通过我在引导程序中编写的函数可用对观点.一切都运作良好……
也就是说,直到我开始做ajax-y的东西.我通过单个文件ajaxDispatcher.php路由我的所有ajax查询.当我这样做时,htaccess(正确)捕获了请求并使用我的引导程序不适当地路由它.同样,它试图路由不需要的文件,如.ico,.css等. 我想出了文件扩展路由异常,但是,我无法让.htaccess忽略单个文件ajaxDispatcher.php的重写规则.这是我的代码所在的位置: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/ajaxDispatcher.php$$0 [L] RewriteRule !.(js|ico|gif|jpg|png|css)$index.php?route=$1 [L] 如何让.htaccess忽略仅针对ajaxDispatcher的路由规则? 解决方法
您应该在RewriteCond块上移动新规则:
RewriteRule ^/?ajaxDispatcher.php$- [L] 否则,RewriteConditions不再包含RewriteRule扩展,我认为它们是有意的. 另一种选择是将其转换为另一个RewriteCond: RewriteCond %{SCRIPT_NAME} !ajaxDispatcher 或者将其作为断言注入最终的RewriteRule(?!ajaxDispatcher.php). 在Serverfault:https://serverfault.com/questions/214512/everything-you-ever-wanted-to-know-about-mod-rewrite-rules-but-were-afraid-to-as上最好地解释了订购事项 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |