PHP - 网址问题

时间:2010-12-24 08:07:22

标签: php

如何使用PHP

将示例1转换为示例2

示例1

http://www.example.com/categories/fruit/apple/green

示例2

http://www.example.com/categories/index.php?cat=fruit&sub1=apple&sub2=green

2 个答案:

答案 0 :(得分:1)

正如所建议的,这是通过HTACCESS和mod_rewrite规则来完成的。对于这样的事情来说,最好的办法就是去做,分享你设法提出的(以及结果或错误),然后人们会帮助你找到一个完整的解决方案。

话虽如此,我会在你的webroot中名为“.htaccess”的文件中提出如下内容。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !-f # Means if the requested address is not a file
RewriteCond %{REQUEST_URI} !-d # Means if the requested address is not a dir
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?cat=$1&sub1=$2&sub2=$3

我没有测试过上面的代码,但它会在我开始的地方,也许可以根据需要与一些独立研究混合...

一些链接:

答案 1 :(得分:0)

这只是简单的字符串操作 - 但请注意,更改 *内的请求URI 将不会自动填充相关的$ _GET变量。

更改字符串:

  <?php
  $input_url='http://www.example.com/categories/fruit/apple/green';
  $parts=parse_url($input_url);
  $embeds=explode('/',$parts['path']);
  $new_path=array_shift(embeds) . '/index.php'; // store 'categories' for later
  $count=1;
  $join=strlen($parts['qry']) ? '&' : '?';
  foreach ($embeds as $val) {
      $parts['query'].=$join . 'ub' . $count . '=' . urlencode($val);
      $join='&';
  }
  $out_url=$parts['scheme'] . '://' 
     . ($parts['username'] . $parts['password']) ? 
             $parts['username'] . ':' $parts['password'] . '@' : ''
     . $parts['host'] . '/' . $new_path
     . $parts['query']
     . '#' . $parts['fragment'];
  print $out_url;