【问题标题】:.htaccess : Forward any link to /index.htm.htaccess : 将任何链接转发到 /index.htm
【发布时间】:2010-04-13 19:55:36
【问题描述】:

我想做以下事情:

如果用户访问或输入一个 url,并且它符合以下任何一条:

  • /路径/路径/路径
  • /路径
  • /路径/路径/

我希望 htaccess 在触发 404 之前将它们转发到该 url + /index.htm。此外,对于某些路径,我想忽略此规则。这是我正在尝试但没有成功的方法:

RewriteCond %{REQUEST_URI} !^(admin)
RewriteCond %{REQUEST_URI} !^(node)
RewriteRule ^/(.*)/$ $1/index.htm [L]

这是应用程序的概述。它实际上是应用程序中的一个子目录,因为该网站目前处于过渡阶段。

ParentApp/
  /folder/
  /folder/
  /Drupal/
    /(new application here)
    /...
    /...

【问题讨论】:

    标签: drupal .htaccess mod-rewrite


    【解决方案1】:

    你重写的方式看起来你只是试图让'index.htm'显示为每个目录的索引文件,你实际上并没有重定向到任何地方。这可以使用DirectoryIndex index.htm 轻松模仿。

    如果您尝试重定向到根索引文件,这里有一个更简单的方法:

    RewriteRule !^(admin/(.*)|node/(.*)) index.htm [L]
    

    这是一个类似于我用于我的网站的规则。确保你有RewriteEngine On

    【讨论】:

    • 我不能使用 DirectoryIndex 规则。 webapp 已经为此使用了 index.php。
    • .htaccess 文件中的 DirectoryIndex 规则应覆盖已定义的任何其他规则。您应该添加一个关于如何设置公共网络文件夹的小大纲,以便我们进一步帮助您。
    • 好的,所以您正在另一个应用程序内的文件夹中运行一个应用程序,对吗?如果你在SubApp里面的.htaccess里面重新定义DirectoryIndex,它不会影响ParentApp的DirectoryIndex,它只会影响它所在的​​那个文件夹里面的文件和文件夹。就像只改变那个目录的规则一样。
    • 我刚刚将 DirectoryIndex 切换到 index.htm 并没有效果。
    【解决方案2】:

    解决了。使用了错误的正则表达式字符。现在可以使用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-26
      • 2013-06-11
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      相关资源
      最近更新 更多