• 0

.htaccess for missing images with wildcards


Question

I have a folder full of product images. And the image file name is something akin to:
 

/images/product_15_small.jpg
/images/product_15_large.jpg
/images/product_201_small.jpg
/images/product_201_large.jpg
/images/product_47502_small.jpg
/images/product_47502_large.jpg

 

If there is an error in the upload process and one of the files doesn't get created, say "/images/product_201_large.jpg", I'd like Apache to replace that file with this file: "/images/missing_0_large.jpg".  And in the case of the smaller image, I want it to be replaced with: "/images/missing_0_small.jpg".

 

I'm not sure how to do conditional RedirectMatch using HT access and a wildcard. Could someone guide me?  Here are the rules that I've tried to experiment with but none of them worked:

 

#TEST 1:
RedirectMatch 404 ^images/product_(\d+)_small.jpg	images/missing_(\d+)_small.jpg
RedirectMatch 404 ^images/product_(\d+)_large.jpg	images/missing_(\d+)_large.jpg


#TEST 2:
RewriteRule ^images/product_(\d+)_small.jpg		images/missing_(\d+)_small.jpg [L]
RewriteRule ^images/product_(\d+)_large.jpg		images/missing_(\d+)_large.jpg [L]

 

From the example above, "TEST 1" doesn't work however it seems to be the most logical format.

"TEST 2" does work, but it always redirects, and I want it to only redirect when the target file is missing (during a 404).

 

Please can an Apache expert help me?

6 answers to this question

Recommended Posts

  • 0

If you add

RewriteCond %{REQUEST_FILENAME} -f

above each of your RewriteRule lines from "Test 2", that should do what you're after. It's basically adding a condition to the rule, that makes the rule only apply if the file doesn't exist

  • 0

Thanks Dave,

So I added this to the .htaccess file:

 

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} -f
  RewriteRule ^images/product_(\d+)_small.jpg	images/missing_0_small.jpg [L]
  RewriteRule ^images/product_(\d+)_large.jpg	images/missing_0_large.jpg [L]
 </IfModule>

 

But I still get a standard 404 error when I access files such as this missing image:

 

https://localhost/images/product_123_large.jpg

 

  • 0

You need the condition for each rewrite rule, otherwise it only applies to the first

 

  RewriteCond %{REQUEST_FILENAME} -f
  RewriteRule ^images/product_(\d+)_small.jpg	images/missing_0_small.jpg [L]
  RewriteCond %{REQUEST_FILENAME} -f
  RewriteRule ^images/product_(\d+)_large.jpg	images/missing_0_large.jpg [L]

 

  • 0

Ah, my mistake, try this

 

RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^images/product_(\d+)_small.jpg	images/missing_0_small.jpg [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^images/product_(\d+)_large.jpg	images/missing_0_large.jpg [L]

 

The ! makes the condition negative

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • What they really need to do is automatically spell "loses" and "lose" correctly since nobody seems to know how to anymore. Then they blame spellcheck/autocomplete and don't realize autocomplete is just filling in the word for them automatically so it was misspelled in the first place.
    • If someone chooses to continue using SB and therefore goes through the manual intervention in the thread, afterwards the BSOD problem is gone. Whether they then re-enable the task doesn't matter, they're done, though on such machines it might pay to keep it disabled in case the next update (if there is a next) causes the same problem. OTOH, if someone disables SB in the BIOS, the problem is also gone. Incidentally, I noticed that this task exists even on machines that don't support SB. It's just installed across the board...and runs. Doing what on such machines is a little hazy.
    • qBittorrent 5.2.2 by Razvan Serea The qBittorrent project aims to provide a Free Software alternative to µtorrent. qBittorrent is an advanced and multi-platform BitTorrent client with a nice user interface as well as a Web UI for remote control and an integrated search engine. qBittorrent aims to meet the needs of most users while using as little CPU and memory as possible. qBittorrent is a truly Open Source project, and as such, anyone can and should contribute to it. qBittorrent features: Polished µTorrent-like User Interface Well-integrated and extensible Search Engine Simultaneous search in most famous BitTorrent search sites Per-category-specific search requests (e.g. Books, Music, Movies) All Bittorrent extensions DHT, Peer Exchange, Full encryption, Magnet/BitComet URIs, ... Remote control through a Web user interface Nearly identical to the regular UI, all in Ajax Advanced control over trackers, peers and torrents Torrents queueing and prioritizing Torrent content selection and prioritizing UPnP / NAT-PMP port forwarding support Available in ~25 languages (Unicode support) Torrent creation tool Advanced RSS support with download filters (inc. regex) Bandwidth scheduler IP Filtering (eMule and PeerGuardian compatible) IPv6 compliant Available on most platforms: Linux, Mac OS X, Windows, OS/2, FreeBSD qBittorrent 5.2.2 changelog: FEATURE: Use D-Bus to show file in file managers (Chocobo1) #24340 BUGFIX: Fix friendlyUnitCompact precision calculation (vafada) #24323 BUGFIX: Remove all top-level folders (glassez) #24333 BUGFIX: Use proper API for checking exit status (Chocobo1) #24349 BUGFIX: Delete stale lockfile when hostname mismatch (TurboTheTurtle, glassez) #24363 BUGFIX: Fix wrong removal procedure of watched folder paths (Chocobo1) #24413 BUGFIX: Don't reannounce before interface changes are applied (glassez) #24447 BUGFIX: Use Latin script for Bosnian locale name (Andy Ye) #24342 WEBUI: Fix performance of global checkbox toggling (tehcneko) #24316 WEBUI: Fix Safari transfer list header misalignment (Piccirello) #24377 WEBUI: Fix error when submitting magnet before metadata loads (Piccirello) #24378 WEBUI: Use correct row id when updating Rss Downloader feed selection (Chocobo1) #24402 WEBUI: Use SameSite=Lax for session cookie to fix cross-site login (Piccirello) #24422 WEBUI: Bring back properties panel expand/collapse button (vafada) #24430 WEBAPI: Only use X-Forwarded-Host header when reverse proxy support is enabled (Chocobo1) #24457 RSSS: Fix "RSS Smart Episode Filter" RegEx (nathanon-akk, glassez) #24398 RSS: Fix previously matched episode format (glassez) #24452 WINDOWS: Fix Python fallback search path (TurboTheTurtle) #24325 WINDOWS: NSIS: Allow to install x64 binary on ARM64 (Chocobo1) #24358 Download: qBittorrent 5.2.2 | 41.1 MB (Open Source) Download: qBittorrent 64-bit installer (qt6) | 43.6 MB Links: qBittorrent Home page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Weechat. https://weechat.org/
  • Recent Achievements

    • Veteran
      branfont went up a rank
      Veteran
    • Reacting Well
      Almohandis earned a badge
      Reacting Well
    • First Post
      Cosminus earned a badge
      First Post
    • One Year In
      ThatGuyOnline earned a badge
      One Year In
    • Week One Done
      Jeroen Wilms earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      485
    2. 2
      +Edouard
      184
    3. 3
      PsYcHoKiLLa
      126
    4. 4
      Steven P.
      87
    5. 5
      neufuse
      72
  • Tell a friend

    Love Neowin? Tell a friend!