2016-06-25 4 views
0

ホストURLがの大文字と小文字を区別したであることがわかりました。大文字と小文字を区別しないで同様のURLを扱います

つまり、/homepage,/Homepageおよび/homePageは異なるURLであり、問​​題があります。

URLをすべて小文字にしても問題は解決しますが、これは私が探しているものではありません。

私は/homepage(すなわち:/hOMEpaGe/HOMEPAGE/hOmEpAgE、...)の任意の変形をリダイレクトすることができるかどうかを知りたい/homePage

私にはわからない(ケース-sensivityに注意してください)私がサーバの設定やPHPのファイルに対処するのが良いのであれば、$_SERVER[REQUEST_URI]を操作してください。

ありがとうございました!

+0

ここで答えを参照してください:http://stackoverflow.com/questions/14814419/how-do-i-make-urls-case-insensitive-in-linux-server –

+0

"問題がある" - なぜ?リンクをクリックするのではなく、サイトに多くの人がURLを入力して、シフトキーを押してもらえないのか?ほとんどのサイトのURLのパスセグメントでは大文字と小文字が区別されますが、通常は問題にはなりません。 – Quentin

答えて

0

確かでそのようなstrtolowerstristr()str_replace()header()機能の組み合わせ:

<?php 
    // ASSUMING THE BASE URI IS KNOWN 
    $baseURI = "http://www.my-domain.com"; 
    // CONVERT ALL CHARACTERS IN THE $_SERVER['REQUEST_URI'] TO LOWER-CASES 
    $uri  = strtolower($_SERVER['REQUEST_URI']); 
    $rdURI  = str_replace("homepage", "homePage", $uri); 


    // USE EITHER A SWITCH OR IF CONDITIONAL LOGIC TO SET THE URI 
    if(stristr($uri, "homepage")){ // REDIRECT ANY THING WITH HOMEPAGE TO: homePage 
     $rdURI = str_replace("homepage", "homePage", $uri); 
    }else if(stristr($uri, "another-uri-1")){ 
     $rdURI = str_replace("another-uri-1", "another-URI-1", $uri); 
    }else if(stristr($uri, "another-uri-2")){ 
     $rdURI = str_replace("another-uri-2", "another-URI-2", $uri); 
    }else if(stristr($uri, "yet-another-uri")){ 
     $rdURI = str_replace("yet-another-uri", "yet-Another-URI", $uri); 
    }else{ 
     // DEFAULT TO THE HOMEPAGE IF ALL ELSE FAIL 
     // THIS DECISION IS UP TO YOU AS YOU MIGHT NOT NEED IT TO WORK THIS WAY... 
     $rdURI = str_replace("homepage", "homePage", $uri); 
    } 

    // REDIRECT TO THE NEW URI... 
    header("location: " . $rdURI); 
    exit; 

    // OR REDIRECT TO THE NEW URI WITH BASE URI... 
    header("location: " . $baseURI . DIRECTORY_SEPARATOR . $rdURI); 
    exit; 
-1

小文字を区別しない場合に使用するの.htaccess [NC]:

RewriteCond %{REQUEST_URI} /phpMyAdmin [NC] 

lmgtfy:(例えばindex.phpを)ブートストラップファイルにリダイレクトを行うことが可能であるかもしれないhttps://perishablepress.com/case-insensitive-redirectmatch/

0

ことがありますこれをPHPでリダイレクトするよりも下位レベルで処理する方が良いアイデアです。

、まずあなたはRewriteMap命令

# Add RewriteMap for redirecting to lowercase URIs 
<IfModule mod_rewrite.c> 
RewriteMap lc int:tolower 
</IfModule> 

を宣言する必要があることを達成するためならばそれからちょうど小文字のものに大文字のURLをリダイレクトするためのRewriteRuleを作成します。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule ^(.*)$ ${lc:$1} [R=301,L] 
関連する問題