【问题标题】:Redirect non existing images that begins with letter a to no-photo-A.jpg将不存在的以字母 a 开头的图像重定向到 no-photo-A.jpg
【发布时间】:2021-10-09 18:11:37
【问题描述】:

我正在尝试将所有不存在的图像重定向到 np-photo.jpg 但我需要一些多样化:

  • 如果 requestet 文件以字母“A”开头,它应该被重定向到 no-photo-A.jpg
  • 如果 requestet 文件以字母“B”开头,则应为 重定向到 no-photo-B.jpg
  • ...

我有代码:

Options +FollowSymLinks
RewriteEngine ON
RewriteCond %{REQUEST_URI} "/images/"
RewriteCond %{REQUEST_FILENAME} ^a.*\.jpg(jpeg|jpg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) /images/no-photo-A.jpg [L,R=301] 

问题在于:

RewriteCond %{REQUEST_FILENAME} ^a.*\.(jpeg|jpg|gif|png)$

如果我删除字母 a,那么它会匹配所有请求,但我不能强制它仅匹配以特定字母开头的文件名。

https://domainname.pl/images/a11.jpg -should be redirected
https://domainname.pl/images/b11.jpg -should not be redirected

【问题讨论】:

标签: regex .htaccess redirect


【解决方案1】:

您可以像这样使用单个规则:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/([A-Z0-9])[\w-]*\.(?:jpe?g|gif|png)$ /images/no-photo-$1.jpg [L,R=301,NC,NE]

这会将不存在的/images/A-foo-bar.jpg 重定向到/images/no-photo-A.jpg

【讨论】:

  • 我刚刚将 (A) 更改为 ([A-Z0-9]) 并且它有效。非常感谢。
【解决方案2】:

使用您显示的示例,请尝试遵循 htaccess 规则。确保您的 htaccess 文件与 images 文件夹(不在其中)一起存在。

确保在测试您的 URL 之前清除浏览器缓存。

Options +FollowSymLinks -MultiViews
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1/no-photo-$2.jpg [NC]
RewriteRule ^(images)/(?:A|B)(.*)\.(?:jpeg|jpg|gif|png)$/?$ $1/no-photo-$2.jpg [R=301,NC,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多