htaccess ne réécrit pas correctement les URL

C'est un peu étrange. Je fais du travail sur un server et j'ai besoin de réécrire des règles pour les directorys qui existent réellement (dans certains cas, ils ont plus d'un niveau de niveau)

À l'heure actuelle, mon "htaccess" ressemble à ceci:

RewriteEngine on RewriteRule ^simfiles/([-\ a-zA-Z0-9:/]+)$ http://mydomain.com/?portal=simfiles&folder=$1 [L] 

Et cela fonctionne bien, par exemple, une URL comme:

 mydomain.com/sifmiles/my-files 

Seront redirigé vers

 mydomain.com/?portal=simfiles&folder=my-files 

Ou dans le cas d'une structure de directory qui est plus profonde qu'un niveau:

 mydomain.com/sifmiles/my-files/more-of-my-files 

Seront redirigé vers

 mydomain.com/?portal=simfiles&folder=my-files/more-of-my-files 

J'ai écrit le regex afin qu'il ne correspond pas aux choses avec un. dans le path, car il existe des files css et js qui résident dans les simfiles / somedirectory, et si je redirige tout, il ne peut pas être chargé.

J'ai essayé une configuration comme celle-ci:

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^simfiles/([-\ a-zA-Z0-9:/\.]+)$ http://mydomain.com/?portal=simfiles&folder=$1 [L] 

Mais cela ne fonctionne pas, les choses ne se chargent pas correctement.

Donc, ma première question est, comment puis-je réussir à "correctement"? Je n'aime pas ma solution car cela signifie que les redirections ne se produiront pas si le dossier a un. en son nom.

Mon deuxième problème, c'est que, bien que la redirection se produise correctement, l'URL devient:

 http://mydomain.com/?portal=simfiles&folder=my-files 

Je souhaite que l'URL rest propre, comme:

 http://mydomain.com/sifmiles/my-files 

Comment puis-je atteindre cet objective?

Vous envisagez trop votre regex. Étant donné que vous vérifiez déjà si le file sous-jacent existe avant la règle de réécriture, vous devriez être en mesure de faire correspondre n'importe quoi.

 RewriteRule ^simfiles/(.+) /?portal=simfiles&folder=$1 [L,QSA]