-2

我有一个页面(即www.mysite.com/products.php?catid=5),我在其中使用$_REQUEST[catid']来获取类别 ID 并在查询中使用它。我切换到 SEF 网址,现在网址显示如下www.mysite.com/products/category/5

如何使用新的 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]
4

2 回答 2

0

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

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

此规则会将 URL 重写www.mysite.com/products/category/5www.mysite.com/index.php?url=products/category/5. 从这一点开始,您可以解析变量$_GET["url"]或改进重写规则。

于 2012-01-19T10:52:49.667 回答
0

由于 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>";

希望这可以帮助

于 2012-01-19T11:13:43.323 回答