如何用.htaccess重写链接

时间:2016-06-24 18:04:04

标签: php .htaccess mod-rewrite url-rewriting

我的功能就像这样

function get_lang($url){
    $lang = explode("/", $url);
    $bahasa = array();
    $bahasa['url_id'] = '';
    $bahasa['url_en'] = '';
    if(in_array('id', $lang)){
      $bahasa['lang'] = "id";
      $bahasa['url_id'] = $url;
      $key = array_search('id', $lang);
      $lang[$key] = "en";
      $i=0;
      foreach($lang as $link){
        if($i==0){
          $bahasa['url_en'] .= $link;
        }else{
          $bahasa['url_en'] .= '/'.$link;
        }
        $i++;
      }

      return $bahasa;
    }

    if(in_array('en', $lang)){
      $bahasa['lang'] = "en";
      $bahasa['url_en'] = $url;
      $key = array_search('en', $lang);
      $lang[$key] = "id";
      $i=0;
      foreach($lang as $link){
        if($i==0){
          $bahasa['url_id'] .= $link;
        }else{
          $bahasa['url_id'] .= '/'.$link;
        }
        $i++;
      }

      return $bahasa;
    }

    return $bahasa;
  } 
$language = get_lang($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);

和我的home.php

<form name="form1" method="post" action="?lang=">

<select name="menu1" onChange="MM_jumpMenu('parent',this,0)">

<?php
if(($language['lang'] == "id") || (empty($language['lang']))) {
?>

<option value="id" selected>ID</option>
<option value="en">EN</option>

<?php
} else {
?>

<option value="id">ID</option>
<option value="en" selected>EN</option>

<?php
} // end else
?>

</select>

和我的.htaccess

 RewriteEngine on
RewriteRule ^([^/]*)$ index.php?mod=home [L]
RewriteRule ^pages/([^/]*)/([^/]*)$ index.php?mod=pages&idp=$1 [L]
RewriteRule ^pages/([^/]*)/([^/]*)$ index.php?mod=pages&idp=$1&page=$2 [L]
RewriteRule ^category/([^/]*)$ index.php?mod=category&idc=$1 [L]
RewriteRule ^category/([^/]*)/([^/]*)$ index.php?mod=category&idc=$1&page=$2 [L]
RewriteRule ^detailpost/([^/]*)$ index.php?mod=detailpost&id=$1 [L]
RewriteRule ^detailpost/([^/]*)/([^/]*)$ index.php?mod=detailpost&id=$1&page=$2 [L]
RewriteRule ^gallery$ index.php?mod=gallery [L]
RewriteRule ^gallery/([^/]*)/([^/]*)$ index.php?mod=gallery&page=$2 [L]
RewriteRule ^contact$ index.php?mod=contact [L]
RewriteRule ^search-result/$ index.php?mod=searchresult [L]
RewriteRule ^search-result/([^/]*)$ index.php?mod=searchresult&search=$1 [L]
RewriteRule ^search-result/([^/]*)/([^/]*)$ index.php?mod=searchresult&search=$1&page=$2 [L]
RewriteRule ^login$ index.php?mod=login [L]
RewriteRule ^register$ index.php?mod=register [L]
RewriteRule ^maintenance$ maintenance.php [L]

当我打开带有默认语言ID的myweb并选择选项id / en其工作时,问题是当我点击其他页面时,如myweb / pages / about-us或其他,这些只是显示home.php

如何解决?

我想在哪里点击myweb / pages / about-us成为myweb / pages / about-us / en或myweb / pages / about-us / id

感谢您的回答并抱歉我的英语不好:D

1 个答案:

答案 0 :(得分:0)

您必须从set lastlog [exec -- last -F | head -n 2 | tail -n 1 ] 重写规则中删除一些字符(/([^/]*)),类似于您已有的所有其他重写规则。

pages