我们有一个子站点 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。
因为这是一个脚本,所以它可以执行各种重定向。
这不是最好的解决方案,因为您必须在两个位置维护重定向,但如果您找不到其他方法,那么您可能需要尝试一下。