如何通过指定.php文件名在Rewrite Rules中传递参数?

Gáb*_*ani 5 php .htaccess rewrite query-string

我有一个站点,它成功地将第一个斜杠后的内容传递给指定的.php文件.(优雅地:删除".php")

site.com/azamat to site.com/azamat.php

RewriteCond %{REQUEST_FILENAME} !-d    
RewriteCond %{REQUEST_FILENAME}\.php -f   
RewriteRule ^(.*)$ $1.php [NC]
Run Code Online (Sandbox Code Playgroud)

如何向这些规则添加其他参数,以便我可以传递"页面"参数,例如:

site.com/azamat/bagatov to site.com/azamat.php?page=bagatov

要么

site.com/thisisthefile/andparams to site.com/thisisthefile.php?page=andparams

Jon*_*Lin 2

尝试添加这些规则(保留已有的规则):

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

这或多或少与您所得到的类似,只是使用%1反向引用来检查URI 的第一部分是否作为 php 文件存在。这是第一部分的比赛:

RewriteCond %{REQUEST_URI} ^/([^/]+)/.+$
Run Code Online (Sandbox Code Playgroud)

这是检查分组是否([^/]+)以 php 文件形式存在的方法:

RewriteCond %{DOCUMENT_ROOT}/%1.php -f
Run Code Online (Sandbox Code Playgroud)

其他一切都是为了匹配第一个之后的内容/,并将其作为page查询字符串参数。