sef URL中的php请求变量

sef URL中的php请求变量,php,sef,Php,Sef,我有一个页面,即www.mysite.com/products.php?catid=5,其中我使用$_请求[catid']获取类别id并在查询中使用它。我切换到SEF URL,现在URL显示为www.mysite.com/products/category/5 $currentURL = $_SERVER['REQUEST_URI']; $elements = explode("/",$currentURL); $id_variable = $elements[3]; 如何使用新URL检索ca

我有一个页面,即www.mysite.com/products.php?catid=5,其中我使用$_请求[catid']获取类别id并在查询中使用它。我切换到SEF URL,现在URL显示为www.mysite.com/products/category/5

$currentURL = $_SERVER['REQUEST_URI'];
$elements = explode("/",$currentURL);
$id_variable = $elements[3];
如何使用新URL检索catid值

.htaccess文件中使用了以下行来切换到SEF URL:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

例如,您需要使用mod_rewrite相应地重写URL

RewriteRule ^(.*)$ index.php?url=$1 [NC,QSA]

此规则将URL www.mysite.com/products/category/5重写为www.mysite.com/index.php?URL=products/category/5。从现在开始,您可以解析变量$\u GET[url]或优化重写规则。

由于htaccess在PHP开始构建之前生效,因此您可以使用下面的代码片段获取当前url,并使用

www.mysite.com/products/category/5

$currentURL = $_SERVER['REQUEST_URI'];
$elements = explode("/",$currentURL);
$id_variable = $elements[3];
如果在url中包含http://元素,那么我认为元素计数应该是5

或者。。。如果您知道id将始终是最后一个元素

$id_variable = $elements[(count($elements)-1)];
它将获取数组中的最后一个元素

您始终可以使用以下命令临时显示数据

echo "<div style='background-color:#FFF;'>";
echo ("Elements array:<br>\n");
print_r($elements);
echo "</div>";

希望这对你有所帮助

因为你没有描述你转为SEF的方法,只有你知道答案。这取决于你是如何转为SEF的。HTACE规则?一些框架?我已经更新了原始帖子,包含了关于我用来创建SEF URL的方法的信息。顺便说一句,这是一个Joomla网站,我只是使用了我在各种教程中找到的一些方法。请查看我的原始帖子,我已经用我的htaccess文件中的更多信息更新了它。