htaccess 如何删除多个扩展名

htaccess how to delete multiple extensions

我想从 URL 中删除 2 个扩展(png、gif) 我的代码看起来像那样,但只有第一种扩展有效,例如当 png 是第一个时,扩展名被删除,但你无法打开 gif 图片,当我将 png 更改为 gif 时,我可以打开没有扩展名的 gif,但我无法打开 png 图片。

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ .png [NC,L]
RewriteRule ^([^\.]+)$ .gif [NC,L]






RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^./]+\.png)$ /imgs/ [L,NC]
RewriteRule ^([^./]+\.gif)$ /imgs/ [L,NC]

我的 .htaccess 在主目录中,

这只是主目录 > imgs

在 "imgs" 文件夹中,您只能找到 .png 和 .gif 文件。

当您在内部将 URL 写回具有 .png.gif 扩展名时,您还需要检查它们是否存在,否则,像 /path/to/image.gif 这样的路径将被重定向到 /path/to/image,并且 总是 被重写为 /path/to/image.png,它不存在。

试试下面的规则集:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/imgs%{REQUEST_URI}.png -f
RewriteRule ^([^\.]+)$ .png [NC,L]

RewriteCond %{DOCUMENT_ROOT}/imgs%{REQUEST_URI}.gif -f
RewriteRule ^([^\.]+)$ .gif [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^./]+)\.(gif|png)$ /imgs/. [L,NC]

试试这个代码:

RewriteEngine on
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(.*?)\.(png|gif)[\s?/] [NC]
RewriteRule  (.*)$  /%1%2 [R=302,L,NE]