将.html扩展名的URL请求重写为小写,删除扩展名,然后添加斜杠

时间:2018-07-06 09:48:53

标签: wordpress .htaccess

我正在一个WordPress网站上工作,该网站的根文件夹中有“ .html”(以前的开发人员),并且我需要仅转换对.html的所有请求

要获得成功的脚本,它需要:

  1. 删除.html扩展名
  2. 将所有字符转换为小写
  3. 添加斜杠
  4. (显然)仍然可以获取请求的文件

到目前为止,这是我的解决方案,除了将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文件的建议

1 个答案:

答案 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指令中创建的   范围。您只是不能在这些范围内声明它。