Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php htaccess合并规则_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php 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/ 如果知道第二个参数(页码)是可选的,因为它是分页的,那么是否

我有两条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/

如果知道第二个参数(页码)是可选的,因为它是分页的,那么是否可以组合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;