.htaccess 扩展后删除不需要的字符

.htaccess 扩展后删除不需要的字符,.htaccess,.htaccess,我有一些页面是通过从cgi串接的查询调用的 xyz.cgi?page=abc.html 我遇到的问题是,我得到了对确实存在的页面的bot请求,但是请求在.html之后有字符,结果是404 在.htaccess中是否有办法去除.html扩展名后的所有内容?您可以使用以下规则删除html扩展名后的字符: RewriteRule ^(.+\.html).+$ /$1 [L,R] 这将重定向 /foo.htmlchars 到 或 编辑: 要将/xyz.cgi?page=foo.htmlchars

我有一些页面是通过从cgi串接的查询调用的

xyz.cgi?page=abc.html
我遇到的问题是,我得到了对确实存在的页面的bot请求,但是请求在
.html
之后有字符,结果是404


.htaccess
中是否有办法去除
.html
扩展名后的所有内容?

您可以使用以下规则删除html扩展名后的字符:

 RewriteRule ^(.+\.html).+$ /$1 [L,R]
这将重定向

/foo.htmlchars

编辑:

要将/xyz.cgi?page=foo.htmlchars重定向到/xyz.cgi?page=foo.html,您可以使用以下命令:

RewriteEngine on

RewriteCond %{THE_REQUEST} /xyz\.cgi\?page=(.+\.html).+\sHTTP [NC]
RewriteRule ^ /xyz.cgi?page=%1 [L,R]

非常感谢。这是可行的,但不幸的是查询字符串不行。你们这些人真漂亮!我无法告诉你这些年来我有多少次解决了我的问题,以及如何回答这些问题。我所需要做的就是将路径添加到cgi中,它就像一个符咒一样工作。
RedirectMatch ^/(.+\.html).+$ /$1
RewriteEngine on

RewriteCond %{THE_REQUEST} /xyz\.cgi\?page=(.+\.html).+\sHTTP [NC]
RewriteRule ^ /xyz.cgi?page=%1 [L,R]