【问题标题】:htaccess redirect all except multiple folders and fileshtaccess 重定向除多个文件夹和文件之外的所有内容
【发布时间】:2012-09-06 03:09:21
【问题描述】:

我一直在尝试多种不同类型的示例,但在尝试添加更多文件夹和文件作为重定向例外时无法正常工作。我只知道这个例子可以在我的 apache localhost 中工作:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  !^js($|/) http://google.com [L,R=301]
</IfModule>

所以基本上我想重定向除 js、css、img 文件夹和 getOrder.php、getCustomer.php 文件之外的所有文件,诸如此类。在这种情况下有人可以帮忙吗?

【问题讨论】:

  • 真的想要重定向任何不存在的东西吗?
  • 我想重定向除那些文件夹和文件之外的所有内容,如果有人访问我在 htaccess 中指定的其他文件夹或文件,例如 cookies.txt 或任何其他文件,请重定向它们。上面我放的代码只允许js访问,尝试添加更多的时候失败了。

标签: php .htaccess redirect


【解决方案1】:

我建议您添加一条“最后”规则,即“不要触摸这些文件夹”。然后在此之后进行重定向。

编辑:使用包装元素更新答案(FollowSymLink,ReWriteEngine on)。

Options +FollowSymLinks
Options -Indexes

# These folders will not be touched.
RewriteEngine On
RewriteCond %{REQUEST_URI} "/css/" [OR]
RewriteCond %{REQUEST_URI} "/img/"
RewriteRule (.*) $1 [L]

# Then have your redirect rule
RewriteEngine On
RewriteRule  (.*) http://google.com [L,R=301]

尽管如 cmets 中所建议的,您可以对“找不到文件”进行重定向,这可能更合适?或者将重定向放在您不希望有人阅读的文件夹中。重定向到您说“未找到”的页面也比重定向到谷歌更好。但这是你的决定。

【讨论】:

  • 我不确定,但您的示例不起作用,我仍然可以访问那些 css 和 img 文件夹而无需重定向到谷歌。但是,如果您说文件未找到(不存在),则无需对此做任何事情吗?
  • htaccess 允许您访问 CSS 和图像文件夹 - 这不是您想要的吗?列出的文件夹(或文件)是您不重定向到的文件夹。
  • 我的意思是,它仍然可以访问所有文件夹,而不仅仅是 css 和 img 文件夹。文件怎么样,你使用 REQUEST_FILENAME 之类的吗?
  • @Ardeus 我已经用包装元素更新了答案(FollowSymLink,ReWriteEngine on)。对不起 - 我把它们当作一个给定的。正如我已经测试过(并再次测试过!)一样,它绝对有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 2016-08-23
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
相关资源
最近更新 更多