重写规则以映射到不带扩展名的URL参数

时间:2016-10-21 16:17:50

标签: php .htaccess mod-rewrite

我正在尝试使用HTACCESS重写以下网址:

http://example.com/index.php?item_id=123456

我希望将其重写为:

http://example.com/213456

参数item_id将在我的php文件中使用以下代码捕获:

<?php
    if (isset($_GET['item_id'])) {
        $url_item = $_GET['item_id'];
        $urlParmResult = filter_var($url_item, FILTER_SANITIZE_URL);
        echo $urlParmResult;
    }else{
        echo "The link you requested does not exist.";
    }
?>

我正在使用以下.htaccess:

RewriteEngine On
RewriteRule ^([^/]*)$ index.php?item_id=$1 [L]

然而,我在页面上返回的是:

index.php

有人可以帮帮我吗?我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以使用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ index.php?item_id=$1 [L]

这会消除现有文件或目录,以避免将索引重定向到索引