htaccess用文件/ id替换PHP file.php?id = dynamic_id

时间:2017-12-08 05:11:41

标签: php .htaccess

我想使用htaccess创建一个网址,例如http://example.com/news/news_post.php?id=dynamic_id,其网址看起来像http://example.com/news/news_post/dynamic_id。所以基本上删除.php文件扩展名,并为我的news_post.php页面将?id=dynamic_id设为/dynamic_id

我在其他例子中搜索过可能有用的东西,但我找不到任何有用的东西。

如果有人可以帮助我,我们将不胜感激!

3 个答案:

答案 0 :(得分:0)

快速谷歌搜索并尝试一些东西我想出了这个......

<强>的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news/news_post/(\d+)*$ ./news_post.php/$1

<强> news_post.php

<?php

//var_dump($_SERVER);

//var_dump(explode('/',$_SERVER['REQUEST_URI']));

$url_segments = explode('/',$_SERVER['REQUEST_URI']);
//var_dump($url_segments);

$id = $url_segments[3];

//var_dump($id);
echo __FILE__;
echo '<br>';
echo 'The Dynamic Id is '. $id;

因此,您可以使用您喜欢的任何内容来获取其余的URL参数,并随意使用它们...

注意: news_post.php中的var_dumps用于快速查看正在发生的事情以及是什么......如果您愿意,我会将它们留在那里供您玩。

当然你会改变它以适应 - 我只是猜到了你可能做或不想做的事情。

示例:

http://phptutorials.com/news/news_post/1

<强>结果:

/home/phptutorials/public_html/news_post.php
The Dynamic Id is 1

使用中央文件处理所有请求。 回到 .htaccess

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

您现在可以使用index.php作为警察&#34;警察&#34;使用上面的代码显示您喜欢的任何页面,如news_post.php中所示。但这不在您的问题之内,而是您可能想要研究的内容。

答案 1 :(得分:0)

  

您可以将此代码添加到.htaccess文件中:

     

<强>的.htaccess

RewriteEngine on     
RewriteCond %{QUERY_STRING} (^|&)id=dynamic_id($|&)
RewriteRule ^news/news_post\.php$ /news/news_post/dynamic_id?&%{QUERY_STRING}

答案 2 :(得分:0)

试试这个

我对此进行了测试,并且它在我的系统中完美运行。

<强>的.htaccess

Options +FollowSymLinks
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
//above code is use for remove the .php 

RewriteRule ^news/news_post/([\w-]+) news_post.php?id=$1

<强>的index.php

在此,我设置了href="javascript:void(0);"并添加了onclick函数并将参数传递给函数。在我设置window.location="news/news_post/"+user_id+"";的功能中,您的网址将显示为news/news_post/1

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<?php 
$userdata['Id']=1;
 ?>
<a href="javascript:void(0);" onclick="myfunciton(<?php echo $userdata['Id']; ?>)">Click me</a>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
        function myfunciton(user_id){
                window.location="news/news_post/"+user_id+"";
        }

</script>
</body>
</html>

<强> news_post.php

您可以使用$_REQUEST

获取网址值
<?php 
echo $_REQUEST['id'];//output is 1
 ?>

<强>输出

您将获得输出

domain.com/news/news_post/1