2016-11-03 5 views
0

URLを大文字と小文字を区別しないで作成したいのですが、既にCheckSpellingを使用しています。 は、並行して、私はまた、私はそれはまた働いURL大文字と小文字を区別しないで書き直し

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [NC,L] 

を適用し、そのためにURLから拡張子を削除することを望みました。 しかし、両方とも完全には機能しません。 私はhtaccessで両方を保つと、エラー300( "Multiple Choices")が出ます。

+0

何がうまくいかないのですか?あなたは300エラーを引き起こしたURIを投稿できますか? – starkeen

+0

URLを大文字小文字を区別しないようにしようとすると、URLはhttp://dev-sql.digitreck.com/dev/Loginに従います。 http://dev-sql.digitreck.com/dev/Login.phpとして使用すると動作しますまたはhttp://dev-sql.digitreck.com/dev/login.php –

答えて

0

あなたは自分でそれを難し​​くしています。 PHPで基本的なルーティングを行う方が簡単です。このような何かを、index.phpの上部に

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f [OR] 
RewriteCond %{REQUEST_FILENAME} (?>.*)(?<=\.php) [NC] 
RewriteRule ^(?!index\.php$). index.php [NS,L] 

:ディレクトリだけではありませんし、ファイルのいずれかでないか、またはPHPファイルで、あなたのindex.phpに何かを送る

<?php 

$url = explode('?', $_SERVER['REQUEST_URI'], 2); 
$url = substr($url[0], 1); 
if ($url) { 
    $url = strtolower($url) . '.php'; 
    if (preg_match('@^[^./][^/]*(?:/[^./][^/]*)*[email protected]', $url) && file_exists($url)) { 
    . # does not contain dotfiles, nor `..` directory traversal, so is a php file below web root 
     include $url; 
    } 
    else { 
     # virtual URL doesn't exist, 
     # set 404 response code header and serve a default page 
     include '404.php'; 
    } 
    exit; 
} 

# no virtual URL, continue processing index.php 

追加rel=canonical各ページの<head>に小文字のURL(クエリ文字列が再追加されている)が含まれているため、重複するコンテンツに対してペナルティを課されません。

関連する問題