Php htaccess合并规则
我有两条htaccess重写规则:Php htaccess合并规则,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我有两条htaccess重写规则: RewriteRule ^tag/([^/\.]+)/?$ index.php?p=tag&tag=$1&pg=1 [L] RewriteRule ^tag/([^/\.]+)/([0-9]+)/?$ index.php?p=tag&tag=$1&pg=$2 [L] 例如: 1-mysite.ext/tag/php/ 2-mysite.ext/tag/php/13/ 如果知道第二个参数(页码)是可选的,因为它是分页的,那么是否
RewriteRule ^tag/([^/\.]+)/?$ index.php?p=tag&tag=$1&pg=1 [L]
RewriteRule ^tag/([^/\.]+)/([0-9]+)/?$ index.php?p=tag&tag=$1&pg=$2 [L]
例如:
1-mysite.ext/tag/php/
2-mysite.ext/tag/php/13/
如果知道第二个参数(页码)是可选的,因为它是分页的,那么是否可以组合2
因此,“pg”将是(1 |$2)
(pg=1或pg=页码)“pg”将是(1 |$2)(pg=1或pg=页码)
不幸的是,它不是那样工作的。您所能做的最好的事情就是使用以下规则:
RewriteRule ^tag/([^/\.]+)/?(\d+)?/?$ index.php?p=tag&tag=$1&pg=$2 [QSA,NC,L]
如果请求了mysite.ext/tag/php/
,那么它将被重写为index.php?p=tag&tag=php&pg=
。pg
参数为空(如您所见)。您需要做的是——在index.php
中放入额外的代码位,检查pg
是否为空,然后为1
赋值:
$page_number = isset($_GET['pg']) ? $_GET['pg'] : '';
if (empty($page_number)) {
$page_number = 1;
}
else {
// convert it to INT type
$page_number = (int)$page_number;
}
上面的代码看起来可能太多(太安全的方法),但这正是我喜欢做的(当做电子商务网站的安全性是第一要务时)。(我跳过了完整验证以缩短验证时间)
但是,如果愿意,您可以将其缩小(您仍然需要验证输入数据):
检查代码是否更容易,是否<代码> PG<代码>为空,然后认为它是代码> 1 < /代码>?
$page_number = isset($_GET['pg']) ? $_GET['pg'] : '';
if (empty($page_number)) $page_number = 1;