使用.htaccess通过index.php重新路由所有请求除了一组特定的请求

Dyl*_*lan 4 apache .htaccess mod-rewrite url-rewriting

所以我只是继承了一个网站.我想要做的第一件事就是构建一个漂亮的小标准,易于使用的CMS,它允许创建一个包含任何URL的页面(例如:whatever.html).

因此,如果用户点击example.com/whatever.html,它应该获取whatever.html的任何db信息并显示它.这是磨坊的事情.

我的问题是网站上有很多页面(都在.htaccess中列出)需要继续访问.例如,/ Promotions通过.htaccess链接到promotions.php,我需要它保持这种状态.

任何人都知道如何构建.htaccess文件以允许特定的重写仍然有效但是通过index.php重新路由所有其他请求?

目前,我只有.htaccess显示一个自定义404页面,该页面依次检查数据库的数据库并显示它(如果存在).这是一个简单的解决方案,但我知道有些人有奇怪的浏览器工具栏(愚蠢与否,它们存在:))autoredirect 404s,我不想用这些工具栏来惹恼我的用户不允许访问某些页面.

非常感谢你的帮助!

Ben*_*Ben 5

RewriteRule晋升应该仍然工作,因为它不是404ing.

如果404处理程序显示页面,因为它存在于数据库中,那么它应该真正返回200 OK状态(覆盖404状态),因此您不应该对浏览器工具栏有任何问题.

至于进行重新路由,您可以执行以下操作:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^.*/(promotions|anotherone|somethingelse)($|/.*$) [NC]
RewriteRule ^(.*)$ /index.php?p=$1
Run Code Online (Sandbox Code Playgroud)