我想了解文件名的重写是如何工作的。我有一个名为item.php
的PHP文件。如果用户选择了他获得的项目,例如item-pencil.php
,item-book.php
等等。
我在htaccess中发现了以下内容:
RewriteEngine On
RewriteBase /my/path
RewriteRule ^item-.*-(.*).php show_item.php?id=$1
任何人都可以详细解释这是如何工作的吗?文件show_item.php
获取id
参数。此规则仅对路径/my/path
有效。 .*
似乎代表字符的任意数字,(.*)
代表probalby多次。但名称pencil
或book
来自哪里?
答案 0 :(得分:1)
RewriteEngine On
RewriteBase /my/path
RewriteRule ^item-.*-(.*).php show_item.php?id=$1
说明:重写规则检查URL是否与给定模式匹配。模式说url(没有主机,rewritebase
部分)应该以“item-
”开头,后跟任何.*
,然后是“ - ”,之后允许任何字符(.*)
,然后是一个字符.
,后跟“php”,最后可以有任何内容。
因此,如果您在浏览器中输入“ http://www.yourdomain.com/my/path/item-www-ssss.php.php ”,则会考虑{{1} }作为item-www-ssss.phpphp
的第一个参数。它将模式应用于它。它匹配给定的模式,给定的模式将被第二个参数RewriteRule
替代。因为show_item.php?id=$1
是$1
,所以您的最终结果将是ssss
。
请注意网址末尾的http://www.yourdomain.com/my/path/show_item.php?id=ssss.php
。