如何使用ID将带有ID的URL重写为短URL

时间:2017-07-05 21:05:16

标签: .htaccess redirect mod-rewrite

我们有一些seo的问题,需要重写id的页面 从

example.com/media/player/related.php?mode=related&video_id=12345

example.com/video/12345

所有id参数都有数值。 RewriteEngine On

我们如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

为了/media/player/related.php?mode=related&video_id=12345(包含查询字符串)重定向/video/12345,您可以在.htaccess的顶部附近执行以下操作文件。

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^mode=related&video_id=(\d+)
RewriteRule ^media/player/related.php$ /video/%1 [R=302,L]

这与示例中提到的源URL匹配,除了捕获video_id URL参数的值并假设它只是数字。这也只是测试查询字符串所声明的查询字符串开头,因此忽略任何其他URL参数。

如果要将302(临时)状态设置为永久重定向,请将301(临时)状态更改为/video/12345,但只有在您检查到它正常工作后才能更改。 (301s被浏览器严格缓存,因此可能会使测试出现问题。)

据推测,您已经有重写 REDIRECT_STATUS的现有指令或某种前端控制器回到“真正的”URL?对<!-- Cadeau categorie side menu --> <div class="container-fluid"> <div class="row"> <div class="col-sm-4 col-md-4"> <div id="categorymenu"> <center> <h3>Categorieën</h3> </center> <ul class="list-group"> <?php foreach (get_categories_h() as $category) : ?> <li class="list-group-item"> <a href="#"> <?php echo $category['name']; ?></a> </a> </li> <?php endforeach; ?> </ul> </div> </div> <!-- Laat cadeau zien op alle cadeaus pagina --> <div class="col-md-8"> <div class="row"> <?php foreach($products as $product) : ?> <div class="col-md-3"> <div id="product"> <a href="<?php echo base_url() ?>/Product/details/<?php echo $product['product_id']; ?>"> <img src="<?php echo base_url(); ?>upload/<?php echo $product['product_foto_thumb']; ?>"> </a> <div class="product_naam"><?php echo $product['product_naam']; ?></div> <div class="ophaal_plaats"> <?php echo $product['ophaal_plaats']; ?> </div> <div class="aangeboden_door"> <p>Aangeboden door: Peter</p> </div> </div> </div> </div> </div> <?php endforeach; ?> </div> </div> <div class="clearfix"></div> <?php include_once ('templates/footer.php'); ?> 环境变量的检查是为了防止重定向循环,假设是这种情况。