如何使用php更改url中的子文件夹

时间:2016-09-05 20:41:43

标签: php url-redirection

我需要帮助才能使用php而不是htaccess文件将请求的子文件夹URL更改为其他文件。

从 stackoverflow.com/的 folder1中 /问

要 stackoverflow.com/的文件夹2 /问

可能吗?

更新

我正在研究基于geoip mod和bot检测功能的IP重定向。

3个Magento网站(单个域名)和每个网站的两个商店视图。

switch (true)
{ case (bot_detected($bot) === FALSE && $country == "us"):
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'us';

break;

case (bot_detected($bot) === FALSE && $country == "uk"):
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'uk';
break;

  default:
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
}

它工作正常,但如果美国访问者点击英国商店重定向的网址未应用。所以我需要强制URL重定向到美国,并且与任何商店条件相同。

2 个答案:

答案 0 :(得分:0)

您需要使用pathinfo功能。这样的事情有效:

<?php

$url = 'http://stackoverflow.com/folder1/ask';

$pathinfo = pathinfo($url);

//$pathinfo['dirname'] contains the full prefix of the URL
//here, http://stackoverflow.com/folder1
//So simply replace folder1 by folder2 in that string
$newPrefix = str_replace('folder1', 'folder2', $pathinfo['dirname']);

//Use that new prefix and append the same basename ('ask')
$newUrl = $newPrefix . '/' . $pathinfo['basename'];

echo $newUrl;

Check it out on 3v4l.org!

答案 1 :(得分:0)

如果您了解路径的结构,则更常用的方法是使用RegEx。

例如,您可以使用以下RegEx:

/stackoverflow\.com\/(.*)\/(.*)/