php请求vf in sef urls

时间:2012-01-19 10:46:14

标签: php sef

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

如何使用新网址检索catid值?

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

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]

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

的文字示例获取元素的值,如下所示:

www.mysite.com/products/category/5

$currentURL = $_SERVER['REQUEST_URI'];
$elements = explode("/",$currentURL);
$id_variable = $elements[3];

如果你在网址中包含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>";

希望这会有所帮助