使用.htaccess在网址中添加网页名称

I just started .htaccess so I do not know too much about it, I try to google it but failed so I post my question here, I am sorry if the question is silly for you. My question is. I use this code in .htaccess page:

RewriteEngine On
RewriteBase /learn/php/htaccess/
RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2

when I enter this url:

http://localhost/learn/php/htaccess/page/number

it works fine. but I also want to add index.php (page name) in the url. I tried this:

http://localhost/learn/php/htaccess/index.php/page/number

AND

http://localhost/learn/php/htaccess/index.php?page/number

but failed. How can I do this? I simply want to do that if I add another page then I am not sure but I have to use this code:

RewriteEngine On
RewriteBase /learn/php/htaccess/
RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2
RewriteRule ^(.*)/(.*)$ another.php?x=$1&y=$2

but how can I open the another.php page with this format? thanks

Try adding a few conditions to your rules:

RewriteEngine On
RewriteBase /learn/php/htaccess/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2

As for routing to another page, you'll need to distinguish the difference between the two routes. For example, given a url:

http://localhost/learn/php/htaccess/foo/bar

where should it get routed to?

index.php?n=foo&p=bar

or

another.php?x=foo&y=bar

?

htaccess knows nothing about the content, only the URL and a regex pattern to match it, so unless you differentiate between the two, you can't route the same thing to two different scripts.

You can just make it easy like this

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?data=$1 [QSA]

in your index.php you put this code

   $data = explode("/",$_GET['data']);
   $page = $data[0];
   $number = $data[1];