How to pass parameters in Rewrite Rules with specifying the .php file name?

.htaccess, php, query-string, url-rewriting

Solution

Try adding these rules (keep the ones you already have):

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/([^/]+)/.+$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^([^/]+)/(.+)$ /$1.php?page=$2 [L]

This is more or less like what you've got with the exception of using a `%1` backreference to check if the first part of the URI exists as a php file. This is the match for the first part:

RewriteCond %{REQUEST_URI} ^/([^/]+)/.+$

And this is the fheck to see if the `([^/]+)` grouping exists as a php file:

RewriteCond %{DOCUMENT_ROOT}/%1.php -f

Everything else is to match what's after the first `/` and make that the `page` query string param.

Problem

I have a site, which successfully passes the content after the first slash to a specified .php file. (elegantly: remove ".php") `site.com/azamat to site.com/azamat.php` ``` RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [NC] ``` How can I add additional parameters to these rules, so I can pass "page" parameters, like: `site.com/azamat/bagatov to site.com/azamat.php?page=bagatov` or `site.com/thisisthefile/andparams to site.com/thisisthefile.php?page=andparams`

Original source