首页 > 解决方案 > Htaccess根据单词的字符重写规则目录

问题描述

如何根据 request_url 重写到更深的目录结构?例如:

%{REQUEST_URI}=/request_url.html

并重写以匹配文件夹中的文件/r/e/q/request_url.html

一些帮助???

标签: apache.htaccessmod-rewrite

解决方案


您可以.htaccess使用 mod_rewrite 在根文件的顶部执行以下操作:

RewriteEngine On

RewriteRule ^request_url\.html$ r/e/q/$0 [L]

反向引用包含与模式匹配的$0整个 URL 路径(保存重复)。RewriteRule


更新:这不仅仅是一个 URL 需要正则表达式来匹配更深目录的前 3 个字符

好的,假设您只匹配.html文档根目录的 URL(即单个路径段) -.html文档根目录中的所有 URL。然后,您可以改为执行以下操作:

RewriteRule ^(.)([^/])([^/])[^/]*\.html$ $1/$2/$3/$0 [L]

其中$1和是对请求的 URL 路径的第一个、第二个和第三个字符的反向引用$2$3IE。RewriteRule 模式(正则表达式)中的第一个、第二个和第三个带括号的子模式(捕获组)。

以上匹配/request_url.html并在内部重写为/r/e/q/request_url.html. 但它不会匹配/foo/request_url.html,因为它不在文档根目录中。


推荐阅读