2012-04-26 82 views
0

我有以下的.htaccess代码:mod_rewrite的,但不是在子目录

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。我认为这是因为管理员是用查询字符串控制的:URIs看起来像/cms/?view=pages&action=edit&id=4

如果我取消注释第一个条件,这个问题不再发生,但我的前端返回404存在,而不是重定向到page.php

我的代码有什么问题?

回答

1

改变你的代码如下:

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

这工作得很好,除了page.php文件仍在CMS的目录中打... – AVProgrammer 2012-04-26 20:38:36

+0

你的意思的'一个URI/CMS/style.css'仍然会去'page.php'? – anubhava 2012-04-26 20:43:24

+0

其实没有,那工作正常。当我导航到/ cms /?view =页面时,它仍然打到page.php。如果检测到/ cms /,我在page.php中将代码放在die()中,但我宁愿不必。 – AVProgrammer 2012-04-26 20:46:21