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

时间:2012-08-13 21:39:54

标签: 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]

如何向这些规则添加其他参数,因此我可以传递“page”参数,例如:

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

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

1 个答案:

答案 0 :(得分:2)

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

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

除了使用%1反向引用来检查 URI 的第一部分是否作为php文件存在外,这或多或少与您所拥有的相似。这是第一部分的匹配:

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

这是查看([^/]+)分组是否作为php文件存在的问题:

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

其他所有内容都与第一个/之后的内容相匹配,并使page查询字符串参数。

相关问题