New user questions

Hey guys,

I stumbled across caddy a few days ago and was impressed by the ease I could migrate my static site to caddy.

However right now I am struggling with the rewrite of my urls. Mine look like where 45 is day of year and 03 is post no. 3 that day. Since the directories for a year do not contain any files but folders, I want to redirect “bad” links to my landing page. Well, I think my english is not good enough to tell you what I want so I will give you a few examples:

# request -> file -> # this does not work -> # works -> # works> # works

I got inspired by this topic when I did not get my regex working (calls to my css file at /css/main got redirected as well).

       to {uri} /blog/{path}/ /blog/index.html

Unforunatelly this does not match a call to `````` and returns a 404...

Does anybody know how to achieve this? Any help will be very much appreciated.


Good morning,

I finally got my Caddyfile working thanks to some hours fiddling around and the very good user guide :wink:

But there is always a new “problem” arising and so I was wondering if you could help me with that as I have no idea how to achieve my plan:

The migration of my static content is finished and I want to handle webmentions myself. Therefore I hacked a little python script that accepts a webmention and writes it down into the “front matter” of my markdown posts. My page template will take care of the representation (as I expect at most 2-5 reactions per post this will not kill caddys performance).

Unfortunately I don’t know how to make the interaction between my webmentions endpoint and my python script. The only way I got working was via proxy but I don’t like the idea of a python process running all day doing nothing…

My Caddyfile looks like this:

localhost # just for testing
errors {
    log error.log {
        size 5 # Rotate after 5 MB
        age  30 # Keep rotated files for 30 days
        keep 5  # Keep at most 5 log files
log access.log {
    rotate {
        size 10 # Rotate after 10 MB
        age  14  # Keep log files for 14 days
        keep 10  # Keep at most 10 log files
markdown {
    template /default.tpl
    template index /index.tpl
rewrite {
    if {path} not_has /webmention
    to {path} /{path}/ /index.html
proxy /webmention localhost:8000


That’s about the best Caddy can do just at the moment, but I believe @valtron is working on a neat looking solution:

There’s also some other discussion in that thread that might be relevant in the mean time.

Hi Whitestrake,

thanks for the confirmation that my worries were right and this is the way to go. But since Caddy is so awesome I will not ditch it for this small hiccup :wink:

Maybe you can help me with another minor thing: See my rewrite rule which I sat up with an “if” as Caddy redirects my “should go to python”-calls to “/index.html” as well. Is this the right way to do it?

Thanks again for the heads-up,

No worries! This part:

rewrite {
    if {path} not_has /webmention
    to {path} /{path}/ /index.html

Looks good! That’s how I usually do things.

Only possible improvement would be elimitating bad rewrite logic for hypothetical requests to /foo/bar/webmention - something like if {request} not_has maybe.

Sometimes I wish there were not_starts_with and not_ends_with conditionals :thinking:

Yes, I was also looking for a not_starts_with when I made this. Thank you for your help, I highly appreciate it :slight_smile:

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.