Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用mod_rewrite,当用户请求时,如何从url中删除路径?_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php 使用mod_rewrite,当用户请求时,如何从url中删除路径?

Php 使用mod_rewrite,当用户请求时,如何从url中删除路径?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,基本上,我想做的是改变url在浏览器地址栏中的显示。因此,如果用户键入example.com/lang/en,我希望地址栏只显示example.com,从显示内容中删除/lang/en部分 我试过几条规则,但都没用。有人能帮我吗?谢谢 编辑:我不明白你的要求。请试试这个 <?php $uri = explode('/',$_SERVER['REQUEST_URI']); if ($lang_key = array_search('lang',$uri)) { $lang =

基本上,我想做的是改变url在浏览器地址栏中的显示。因此,如果用户键入example.com/lang/en,我希望地址栏只显示example.com,从显示内容中删除/lang/en部分


我试过几条规则,但都没用。有人能帮我吗?谢谢

编辑:我不明白你的要求。请试试这个

<?php
  $uri = explode('/',$_SERVER['REQUEST_URI']);
  if ($lang_key = array_search('lang',$uri)) {
    $lang = $uri[$lang_key+1];
    unset($uri[$lang_key],$uri[$lang_key+1]);
    $_SESSION['lang'] = $lang;
    header('location: http://example.com/'.implode('/',$uri));
  }

您不能通过
mod\u rewrite

如果将
example.com/lang/en
更改为
example.com
,则无法再访问
lang/en
,也无法更改语言

最好的方法是使用
$\u SESSION
标题(“位置”)

example.com/?lang=en的示例

session_start()

if(isset($_GET['lang']))
{
   $_SESSION['lang'] = $_GET['lang'];
   header("location: example.com");
   exit;
}
if(!isset($_SESSION['lang']))
   $_SESSION['lang'] = "en" //default language

要在对
/lang/en
发出明确请求时重定向浏览器,请执行以下操作:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/lang
RewriteRule ^en/lang/(.*)$ /$1 [L,R=301]
/
请求内部重写回
/land/en

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/en/lang%{REQUEST_URI} -f
RewriteRule ^(.*)$ /en/lang/$1 [L]

嗯,好的。说得对。然后我将使用mod_rewrite从显示中删除查询?在运行页面后,您不能使用mod_rewrite,您应该使用标题(“位置…”)来更改位置