更新:这有效:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} ^[A-Z]+\ ([^\s]+)
RewriteRule (.+) /index.cfm?event=checkuri&uri=%1 [QSA]
一些背景...
所以我们已经在我们的 .htaccess 文件中有一个包罗万象的重定向,它是这样的:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) /index.cfm?event=checkuri&uri=$1
这与检查 URI 是否匹配的数据库表相关联。所以如果我们只是移动了一个曾经有这个页面的网站:
/some-awesome-article.html
进入我们的系统,新地址是
/awesome-article/12442
并且有人试图访问旧的 URI,我们的系统会检查这个,找到一个匹配,并将它们转发到新的主页:/awesome-article/12442
这个系统工作得很棒,但有一个例外。如果 URI 类似于 /index.php?id=123412,那么整个系统就会崩溃。事实上 /index.php/whatever 也不起作用。
除此以外,其他一切都有效。我们不将 PHP 用于我们的 Web 应用程序(尽管支持人员在服务器某处的管理控制台中说它)。
所以基本上我需要的是,如果在任何地方检测到 index.php,它将把 URI 转发到我们现有的系统:
我该如何修改它来修复它?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) /index.cfm?event=checkuri&uri=$1