Apache htaccess to caddyfile v2

1. Caddy version (caddy version):

Caddy 2.1.1

2. How I run Caddy:

sudo systemctl reload caddy

a. System environment:

Debian 10

d. My complete Caddyfile:

domainname.eu {
        root * /var/www/html/domainname.eu
        php_fastcgi unix//var/run/php/php7.3-fpm.sock
log { output file /var/log/caddy/domainname.eu.access.log
        }
        file_server
}

3. The problem I’m having:

Dear caddy Team, I’m a french user of caddy , and I tried to convert apache rewrite to caddyfile , but that’s doesn’t works,I can’t find the good syntax, (path regex / rewrite)
I need help , thank in advance ,sorry for my poor english
Best Regards

Blog - Live démo de Zwii <–> Blog - Live démo de Zwii

Connexion - Live démo de Zwii <–> Connexion - Live démo de Zwii
and …

the apache htacess is

<ifModule mod_rewrite.c>
	RewriteEngine on
	RewriteBase /
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^(.*)$ index.php?$1 [L]
</ifModule>

Thanks

The php_fastcgi directive has a built-in try_files rewrite, I think it should already do what you need. See the expanded form of php_fastcgi which shows what it does:

What exactly isn’t working? What behaviour are you seeing instead of what you expect?

Je suis bilingue, donc si l’anglais est trop troublant, tu peux clarifier en français.

Hello Francis
thank you for your feedback
I try to rewrte clean Url to a dynamic Url

for example
Erreur 404 - Live démo de Zwii to Erreur 404 - Live démo de Zwii (with ?)

that works with
@zwii path_regexp zwii ^/()([a-zA-Z0-9/-]+)$
rewrite @zwii /{re.zwii.1}index.php?{re.zwii.2}&{query}

but with url below that doesn’t work

Erreur 404 - Live démo de Zwii to Erreur 404 - Live démo de Zwii

can you help me for the good syntax path-regexp/rewrite ?

Thanks

Bonjour Francis
j’ essaye de rediriger une Url propore vers son Url dynamique
cela ne fonctionne pas directement avec l ‘inclusion php_fastcgi unix//var/run/php/php7.3-fpm.sock
je suis obligé d’ écrire un path-regexp/rewrite
avec le path_regexp et rewrite ci dessus cela fonctionne avec les url xxxx mais pas xxxx/yyyy
(niveau supérieur) désolé je n’ai pas le droits de poster plus de 4 URL complètes , voir ci dessus pour les URLs entières.

Peux tu m 'apporter une aide , peut être que cela peut se faire avec une autre directive (try_files …)
merci d 'avance pour ton aide
Bruno

I think that adding this may do it?

try_files {path} /index.php?{path}&{query}

I don’t remember if try_files ignores the part including and after ? when checking for files on disk, but it might work.

L’idée est que ça vérifie si {path} une filière qui existe sur disque, sinon, ça essaye index.php qui devrait toujours être là, et ensuite ça fait un rewrite à ça.

Il fait tard pour moi ce soir (ici au Canada), ou j’aurais vérifié si ça fonctionne.

Francis,
I tried

try_files {path} /index.php?{path}&{query}

and I have a 404 error (page not found)

Have a good night
Bruno

Ok une autre option:

@notStatic not file {path}
rewrite @notStatic /index.php?{path}&{query}

Au haut du Caddyfile (avant domainname.eu), tu peux ajouter ceci pour voir plus d’info dans les logs (stdout).

{
	debug
}

Tu peux utiliser cette commande pour voire les logs:

journalctl --no-pager -u caddy | less

Bonjour Francis,
je n 'ai pas plus de succès avec les commandes ci dessus, mais en observant les log j 'ai remarqué que l’url construite avec

@zwii path_regexp zwii ^/()([a-zA-Z0-9/-]+)$
rewrite @zwii /{re.zwii.1}index.php?{re.zwii.2}&{query}

comportait le code Hexa %2F au lieu de l 'unicode /
le %2F serait donc mal décodé par le navigateur ou alors j 'ai eu un problème lors de l’installation de php et caddy ?
De ce faite j 'ai refait une nouvelle installation de Debian/Php/Caddy. Mais malheureusement je n 'arrive plus à faire fonctionner caddy , il faut que je reprenne cela en fin de semaine , la reprise du travail ne me laisse pas le temps de reconstruire le serveur.
pour le %2F as tu déjà rencontré ce problème ?
Bonne journée
Bruno

Hmm, sounds similar to this issue:

https://github.com/caddyserver/caddy/issues/3596

Quel sorte d’application PHP? Il y a possiblement de la documentation sur le sujet. Caddy est plus similaire a Nginx que Apache, si l’appli a comme exemple une configuration qui fonctionne avec Nginx, je pense que ca serait plus facile a repliquer.

Hello Francis
Merci beaucoup pour ton aide,merci de m’avoir mis sur le chemin
Maintenant ça fonctionne
j 'ai remis caddy opérationnel , caddy ne fonctionnait plus car Apache était en marche (je ne savais pas)
j 'ai stoppé apache et le serveur caddy a fonctionné , pour la ré écriture des Url propre j 'ai ajouté la ligne uri replace %2F / , il a peut être d 'autres méthodes, mais celle ci fonctionne.

@zwii path_regexp zwii ^/()([a-zA-Z0-9/-]+)$
rewrite @zwii /{re.zwii.1}index.php?{re.zwii.2}&{query}
uri replace %2F /

Encore merci pour ton aide , je vais continuer a explorer les possibilités de Caddy
Best regards
Bruno

1 Like

Parfait! Merci d’avoir confirmé!

This topic was automatically closed after 30 days. New replies are no longer allowed.