2016-10-21 51 views
0

我尝试使用.htaccess的重写以下网址:重写规则映射到URL参数不带扩展

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

您可以使用:

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

消除现有的文件或目录,以避免重定向指数指数

+1

这工作完全!谢谢!你介意用RewriteCond描述一下这里发生的一些事情吗? – remixdesign

+0

你可以在这里阅读关于文件或目录测试的所有信息:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond – Croises

+1

非常感谢。这是一个巨大的帮助! – remixdesign