.htaccess problemi con hide l'estensione del file e forzare la barra finale

Quando digito domain.com/page.php non cambia automaticamente in domain.com/page/. Inoltre, per le pagine in sottodirectory, se seguo un collegamento a domain.com/sub/1/ tutto va bene, ma se lo digito nel browser esso reindirizza a domain.com/1/

Questo è quello che ho in .htaccess

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^/]+)/$ $1.php # Forces a trailing slash to be added RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ RewriteRule (.*)$ /$1/ [R=301,L] 

Qualche idea su cosa dovrei fare per accedere ai file nelle sottodirectory e nella directory principale? Sono nuovo a questo.

Cambia l'ordine delle regole.

Prova questo:

 RewriteEngine on # Forces a trailing slash to be added RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+?[^/])$ /$1/ [R=301,L] # .php ext hiding RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/$1.php -f RewriteRule ^(.+?)/?$ /$1.php [L]