2012-03-19 45 views
0

これを行うための書き換えルールを作成することはできますか?ucwords strtolowerを書き直し

私のPHPは、すべての最初の文字を大文字にあり、一部はその後、私はルールを作りたい
Filename.phpのようなハイフンを持っており、ファイル・Name.php

まず

# Try this rewrite only if the file is not found 
RewriteCond %{REQUEST_FILENAME} !-f 

可能性のあるファイル

での実際のファイルへ

mysite.com/thing 
mysite.com/Thing 
mysite.com/THING 

書き換えのような要求のために(ハイフン付き)

mysite.com/Thing.php 

または

mysite.com/another-thing 
mysite.com/Another-Thing 
mysite.com/ANOTHER-THING 

書き換え

mysite.com/Another-Thing.php 

で実際のファイルへのファイルがまだ見つからない場合にエラーを、あきらめて再書き込みindex.php ie

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* /index.php [R=301,L] 

私は確かにこれをPHPで行う方法を考えることができますもし書き換えが可能であれば。

ありがとうございます。

+0

あなたはサーバーの構成へのrootアクセス権を持っているだけ*場合リライトの内側に、これを行うが、*することができます - RewriteMap命令と呼ばれるディレクティブを使用して。ただし、書き換えエンジンに '.htaccess'アクセスしかない場合は、これを使うことはできません。 – TerryE

+0

はい私はroot権限を持っています – user1275751

答えて

0

あなたがapacheやバーチャルホスト設定ファイルに次の宣言を追加することができます。

RewriteMap lc int:tolower 

をし、同じファイルまたは.htaccessのファイルのいずれかで、次のルールは、例えば、このマップ機能を使用して文字列を操作することができます

RewriteRule^      -  [E=LC_URI:${lc:%{REQUEST_URI}}] 

そして今、あなたの書き換えルールで%{ENV:LC_URI}を使用するか、大手を削除したい場合は/:

RewriteCond ${lc:%{REQUEST_URI}} ^/(.*)$ 
RewriteRule ^.*     %1  [E=LC_FILE:%1] 

など