htaccess mod重写规则来覆盖cakephp控制器

时间:2013-09-12 23:27:09

标签: wordpress apache .htaccess cakephp mod-rewrite

我有一个运行cakephp的站点,并且在同一个根目录中也有一个wordpress站点。我有以下问题。首先向Wordpress提供请求,以便主页的URL将通过wordpress'索引进行路由。现在我们的cakephp代码包含一系列控制器,用于管理我们网站的一些特殊功能。我们有一个重写规则,看起来遵循RewriteCond %{REQUEST_URI} !^/users。这允许像www.example_site.com/users这样的网址命中我们的cakephp框架,而不是在wordpress找不到此页面时生成404错误。

此规则绕过wordpress路由,以便将请求发送到cakephp。我们对每个cakephp控制器使用类似的规则。问题是我们曾经有一个拥有用户页面的wordpress插件。此用户页面附加了跟随www.example_site.com/users/some_dudes_username的URL的参数。这些用户页面的一些链接仍然由谷歌或人们的书签索引,所以发生的是我们写的重写规则导致它们绕过wordpress(而不是像过去那样404),而是在那里打了cakephp和404。我正在考虑如何使它,以便我们的任何cakephp用户控制器功能被正确地重定向到(只有少数所以白色列表似乎是要走的路),但任何其他请求到用户控制器的行动,将不会像www.example_site.com/users/some_dudes_username重定向到我们的常见问题解答页面那样存在。我有以下白名单代码,似乎有效,但我无法弄清楚如何正确地重定向其他一切:

RewriteCond %{REQUEST_URI} !^/admin/users
RewriteCond %{REQUEST_URI} !^/users/login
RewriteCond %{REQUEST_URI} !^/users/admin_login
RewriteCond %{REQUEST_URI} !^/users/logout  
RewriteCond %{REQUEST_URI} !^/users/admin_logout
RewriteCond %{REQUEST_URI} !^/users/admin_index

# Then I need a rewrite rule to take everyone else to the FAQ page.

感谢任何有帮助的人。

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但听起来您需要这样的RewriteRule

RewriteRule ^/users/.*$ /URI/to/faq.html [R]

此规则应该在您的RewriteCond之后,因为条件仅适用于他们之后的规则。

希望这会有所帮助。