我想从URI替换文件名。我需要在网页上更换网址。 例: 页面网址:
https://www.domain.com/...../india-hotels/dun-hotels/abc.php
我的代码
echo $uri=$_SERVER['REQUEST_URI'];
返回
...../india-hotels/dun-hotels/abc.php
但我不需要“abc.php”。我需要这样的
...../india-hotels/dun-hotels/
这应该使用php完成,因为我会在我的网页上使用它。 请建议我解决这个问题。
答案 0 :(得分:1)
您可以使用简单,有规律的explode
& implode
获取您想要的内容,如下面的代码段所示。 Quick-Test Here
<?php
// ASSUMING THAT $_SERVER['REQUEST_URI']; RETURNS THE STRING BELOW:
$uri = /*$_SERVER['REQUEST_URI'];*/ "...../india-hotels/dun-hotels/abc.php";
$parts = explode("/", $uri);
array_pop($parts);
$uri = implode("/" , $parts) . "/";
echo $uri; //<== YIELDS::: ...../india-hotels/dun-hotels/
或者,甚至最好,您可以将basename()
函数与str_replace()
结合使用,以实现相同的目标:
<?php
// ASSUMING THAT $_SERVER['REQUEST_URI']; RETURNS THE STRING BELOW:
$uri = /*$_SERVER['REQUEST_URI'];*/ "...../india-hotels/dun-hotels/abc.php";
$baseName = basename($uri);
$uri = str_replace($baseName, "", $uri);
echo $uri; //<== YIELDS::: ...../india-hotels/dun-hotels/
以浓缩形式:
<?php
$uri = /*$_SERVER['REQUEST_URI'];*/ "...../india-hotels/dun-hotels/abc.php";;
$uri = str_replace(basename($uri), "", $uri);
echo $uri; //<== YIELDS::: ...../india-hotels/dun-hotels/
答案 1 :(得分:0)
在apache中启用重写模块。
将此内容写入 .htaccess 文件
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php$ /$1 [L,R=301,NC,NE]
答案 2 :(得分:0)
我解决了这个问题
$uri_ar=array();
$uri=($_SERVER['REQUEST_URI']);
if(strpos($uri,'.php')){
$uri_ar=explode('/',$uri);
array_pop($uri_ar);
$uri=implode('/',$uri_ar);
}