.htaccess文件未按计划运行

时间:2009-10-06 00:31:26

标签: php apache .htaccess

好的,所以我们在错误的目录中工作,嗯!

我们有一个 .htaccess 文件,用于将某些文件重定向到php脚本。现在我们要添加一些我们想要绕过此重定向的硬文件。到目前为止,这似乎并没有奏效,我们感到难过。

以下是我们在启动适用于其他应用程序的引擎后的初始.htaccess文件内容:

  

RewriteCond $ 1!^(index.php | robots.txt | favicon.ico)

     

RewriteRule ^(。*)$ /index.php/$1 [L]

我们正在尝试从 / directory / 加载文件所以我们尝试将其中的每一个添加到RewriteCond部分:

  

RewriteCond%{REQUEST_URI}!目录

     

RewriteCond $ 1!^(index.php | i / | robots.txt | favicon.ico |目录)

似乎都没有效果。关于如何加载这个的任何想法?

示例:

应重定向

  

http://site.com/thisredirects/

不应重定向

  

http://site.com/directory

     

http://site.com/directory/

     

http://site.com/directory/index.php

     

3 个答案:

答案 0 :(得分:1)

试试这个:

不会重定向

RewriteRule directory/.* - [L]

重定向

RewriteRule ^$ thisredirects/ [L]
RewriteRule (.*) thisredirects/$1 [L]

答案 1 :(得分:0)

您是否尝试在/目录目录中创建第二个.htaccess文件并在其中执行NoRewrite?

答案 2 :(得分:0)

您似乎希望将docroot中实际上不是现有文件的任何内容重定向到index.php。这一点重写应该处理:

RewriteCond %{REQUEST_FILENAME} -s [OR]  # file with size
RewriteCond %{REQUEST_FILENAME} -l [OR]  # file is a link
RewriteCond %{REQUEST_FILENAME} -d       # file is a directory
RewriteRule ^.*$ - [NC,L]                # don't rewrite [last rule]
RewriteRule ^(.*)$ /index.php/$1 [NC,L]       # everything else gets sent to index.php

[OR]运算符也可能是你在RewriteCond上寻找的。

此外,如果您只想将/目录部分列入白名单,则可以在重定向前将规则放在[L]标记为“最后一条规则”

之前
RewriteRule ^/directory.*$ - [NC,L]