2011-04-08 11 views
0

.htaccessを使用してこれらの両方を同時に実行することに問題があります。URLSを書き換えてindex.phpを削除し、codeigniterで小文字を強制する方法は?

index.phpの削除は機能していますが、小文字を追加しようとすると500エラーがスローされます。私はcodeigniterを使用しています。どんな助けもありがとう!

ここに私の.htaccessコードです:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 

RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

答えて

0

ことは不可能であるため、私が説明させています。 index.phpを削除

  1. はまだあなたがそれを参照するか、またはURLにそれを追加していないにもかかわらず、URIはまだそれにはindex.phpを持っている要求されたので/ yadda/yaddaをindex.phpにすべての要求を送信します。
  2. あなたがmysite.com/index.php/lowercase/

しかし、すべてこのRewriteMap命令が唯一のあなたからhttpd内で宣言することができ越えてになるだろうので、(第二の書き換えルールによってトリガ)リダイレクトは、インデックスセクションをゼロにします次に、あなたの.htaccessファイルにあなたの変数LCを使用

RewriteMap lc int:tolower 

が、その後、再び一つだけ2のは、あなたが、両方を持つことはできません勝つ:.confのファイルは、あなたがそこにそれを宣言します。

index.phpを使わずにURLを小文字にしたり、サイトを動作させたりするのは、それぞれが何をするのかという性質上常に競合するためです。

本当に私はそれが起こって見ることができる唯一の方法はそうのように、PHPである:

$this->load->helper('url'); 
$your_URL = uri_string(); 
preg_match_all('/[A-Z]/', $your_URL, $match) ; 
$total_count = count($match [0]); 
if($total_count > 0){ 
    $new_line = strtolower($your_URL); 
    redirect($new_line); 
} 

この私はあなたのクラスの主な構築物に入れてしまうでしょうが、私はこれがあなたを助け願っています。

1

あなたが小文字を強制しようとしているのであれば、提案されたPHPコードは機能しません。以下は、正しいPHPコードです。

$url = $_SERVER['REQUEST_URI']; 
$pattern = '/([A-Z]+)/'; 

if(preg_match($pattern, $url)) { 
    $new_url = strtolower($url); 

    Header('HTTP/1.1 301 Moved Permanently'); 
    Header('Location: ' . $new_url); 
    exit; 
} 

// your code here 

ここForce lowercase .htaccess

見つかりディスカッション
関連する問題