如何使用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
答案 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;