我正在一个WordPress网站上工作,该网站的根文件夹中有“ .html”(以前的开发人员),并且我需要仅转换对.html
的所有请求。
要获得成功的脚本,它需要:
.html
扩展名到目前为止,这是我的解决方案,除了将URL转换为小写之外,它会执行所有操作,并且不会对WordPress URL结构造成冲突:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^/]+)/?$ $1.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ $1_$2.html [L]
我拿回去。上面的脚本没有执行我需要的操作,因此我愿意接受所有使用根目录中的.htaccess
文件的建议
答案 0 :(得分:0)
调整您的Apache配置以使用mod_rewrites RewriteMap 指令:
RewriteMap lc int:tolower
RewriteRule (.*?[A-Z]+.*) ${lc:$1} [R]
在此处查看Apache手册:Redirect a URI to an all-lowercase。
文档中的重要说明:
每个目录和.htaccess上下文
RewriteMap指令可能不会 在部分或.htaccess文件中使用。您必须声明 服务器或虚拟主机上下文中的映射。您可以一次使用地图 在您的RewriteRule和RewriteCond指令中创建的 范围。您只是不能在这些范围内声明它。