MOD_REWRITE但不在子目录中

时间:2012-04-26 20:17:00

标签: php .htaccess mod-rewrite

我有以下HTACCESS代码:

Options +FollowSymLinks
RewriteEngine On
RewriteBase   /

#RewriteCond %{REQUEST_URI} !(/cms/|/js/|/mobile/)* [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /page.php [L]

就目前而言,它可以在网站的根目录中运行,但是访问管理页面(/cms/),我可以通过PhpConsole告诉它仍然在点击page.php。我认为这是因为管理员使用查询字符串进行控制:URI看起来像/cms/?view=pages&action=edit&id=4

如果我取消注释第一个条件,则不再出现此问题,但我的前端会返回404不存在的文件,而不是重定向到page.php

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

使用以下代码更改您的代码:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (?!^(cms|js|mobile)(/.*|)$)^.*$ page.php [L,NC]