.htaccess 重定向所有子目录和文件

.htaccess 重定向所有子目录和文件

我们有一个子站点 domain.com/path/ad 并且我想将所有流量重定向到框架处理程序。domain.com/path/index.cfm

到目前为止

RewriteRule ^$ index.cfm [QSA,NS]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.cfm [R=permanent,L]

如果文件夹存在,它会正确地将 /path/ad/other 重定向到 /path/ad/index.cfm。我需要做什么才能让它适用于不存在的文件夹?我还需要跟踪请求的原始文件/路径。

/path/ad/example1 => /path/ad/index.cfm?ad=example1

答案1

在 .htaccess 下/path

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^path/ad/(.+)$ path/index.cfm?ad=$1 [R=permanent,L]
</IfModule>

在您的问题的开头,您写道您想要重定向到path/index.cfm,而在问题的结尾,您写道path/ad/index.cfm我假设您的意图是前者。

答案2

一种方法是添加 index.xxx(例如,如果您使用 php,则添加 index.php)脚本。如果有人尝试访问 /path/ad/example1 并且 /ad/example1 部分​​不存在(假设服务器配置为使用 index.xxx 进行索引,无论是全局的还是从 .htaccess 的),Apache 将运行 /path/index.php 并在环境变量中使用 /ad/example1。

因为这是一个脚本,所以它可以执行各种重定向。

这不是最好的解决方案,因为您必须在两个位置维护重定向,但如果您找不到其他方法,那么您可能需要尝试一下。

相关内容