【问题标题】:How to redirect everything except root and some folders in htaccess如何重定向除根目录和htaccess中的某些文件夹之外的所有内容
【发布时间】:2019-01-27 00:15:35
【问题描述】:

我正在寻找 .htaccess 代码,它将 mydomain.com 上的所有流量重定向到 example.com/folder1,除了 example.com 和 folder2、folder3 和 folder4 的根目录。 总结: 重定向的 URL - example.com 上的所有文件和文件夹 重定向到 - 到 example.com/folder1 例外 - 根目录、文件夹 2、文件夹 3、文件夹 4

RewriteEngine on 
RewriteBase / 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteCond %{REQUEST_URI} !^/folder1(/|$) 
RewriteCond %{REQUEST_URI} !^/folder2(/|$) 
RewriteCond %{REQUEST_URI} !^/folder3(/|$) 
RewriteCond %{REQUEST_URI} !^/folder4(/|$)

RewriteRule ^$ https://example.com/folder1 [L,R=301]

编辑: 尝试使用上面的代码进行重定向,但不确定代码本身是否有问题,因为它似乎没有按预期工作。可能是什么问题呢? 问题:我希望重定向排除主页、文件夹 2、文件夹 3、文件夹 4,否则将所有内容重定向到文件夹 1

【问题讨论】:

  • 好的,很好,你有一个计划。现在你看,SO 不是免费的编码服务。如果您需要有人为您工作,那么我建议您聘请付款程序员。我们在这里为您实现的代码中的问题提供帮助。因此,您需要自己解决任务,并且只有当您遇到无法回答自己的特定问题时,然后是时候来这里问那个具体的问题.
  • @arkascha 我实际上有代码,它在这里RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^example\.com$ RewriteCond %{REQUEST_URI} !^/folder1(/|$) RewriteCond %{REQUEST_URI} !^/folder2(/|$) RewriteCond %{REQUEST_URI} !^/folder3(/|$) RewriteCond %{REQUEST_URI} !^/folder4(/|$) RewriteCond %{REQUEST_URI} !^/js(/|$) RewriteRule ^$ https://example.com/folder1 [L,R=301]
  • 请向问题本身添加附加信息,以便阅读。谢谢。您的问题下方有一个edit 链接。 使用它 .
  • 既然您给了我们代码,那么我们这边的下一个明显问题是:您的实际问题是什么?您的具体问题?
  • @arkascha 希望问题现在很清楚。谢谢

标签: .htaccess redirect mod-rewrite cpanel


【解决方案1】:

感谢您的 cmets,您提供的问题的附加信息现在变得更加清晰。

我建议这个规则集,它应该能让你更接近你想要达到的目标,尽管它仍然可能需要一些调整......

RewriteEngine on 
RewriteBase / 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/folder1/?
RewriteCond %{REQUEST_URI} !^/folder2/?
RewriteCond %{REQUEST_URI} !^/folder3/?
RewriteCond %{REQUEST_URI} !^/folder4/?
RewriteRule ^/?(.*)$ https://example.com/folder1/$1 [END,R=301]

此规则集同样适用于 http 服务器主机配置或动态配置文件(“.htaccess”文件)。显然,重写模块需要在 http 服务器中加载,如果您使用动态配置文件,您需要注意它的解释在主机配置中完全启用,并且它位于主机的 DOCUMENT_ROOT 文件夹中。

一般来说:您应该始终喜欢将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,而且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)的情况下作为最后一个选项提供。

【讨论】:

  • 该代码有效,除非您将 example.com/explore 重定向到 example.com/folder1/404.shtml。很奇怪404.shtml 来自哪里,因为它不是目录中文件的一部分。我希望它会转到 example.com/folder1/explore。其他是如实保留所需的文件夹
  • 已更正!! explore 文件夹尚未在 example.com/folder1 中。不得不包括它。感谢您的帮助
猜你喜欢
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2012-01-15
相关资源
最近更新 更多