It doesnt have to be a physical file and i didnt say it is.
Actually, you did. Or rather your rule did. See, I don't want to come right out and say "You have misunderstood everything and your rules are all backward" if there is some other explanation.
I think i am being explicit.
I've no doubt you do.
Running this seems to remove the app.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ app.php [QSA,L]
But how can i make it remove the /page too and add .php?
This rule has no effect on the visible URL. What it says is:
If the user requests
any file that doesn't physically exist-- which the server has to check for on every request, regardless of extension-- then serve content from-- we hope--
example.com/app.php
retaining the original query string. (This flag is actually unnecessary, since that's the default behavior.) I said "we hope" because the target of the rule doesn't begin in a / slash, so we're relying on a RewriteBase directive somewhere earlier in the same htaccess.
So... Do you want to
keep those weird URLs with /app.php/ in the middle, or do you want to
redirect to a different URL? And if you do want to redirect, have you taken steps to ensure that your CMS generates different links in the future? Neither browsers nor search engines will be happy if a site's internal links point straight to a redirect.
Or do you simply want to do the opposite of what the original rule said, replacing
RewriteRule ^forums/zombielinks\.php$ /forums/app.php/page/zombielinks [L]
with its mirror-image
RewriteRule ^forums/app.php/page/zombielinks /forums/zombielinks\.php$ [L]
?
I have to say that the latter seems a little more plausible, assuming /forums/zombielinks.php is a real, physical file that already exists.