静的ファイルの大文字小文字を吸収

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /canonical.php [L]
</IfModule>

view raw
.htaccess
hosted with ❤ by GitHub

<?php
function not_found($message = '') {
header("HTTP/1.1 404 Not Found");
echo $message."\n";
die();
}
if (!isset($_SERVER['REQUEST_URI']))
not_found();
$uri = htmlspecialchars($_SERVER['REQUEST_URI']);
if ($uri === '/canonical.php')
not_found();
$dir = dirname(__FILE__).dirname($uri).'/';
if (!file_exists($dir))
not_found("{$uri} is not found.");
$file = pathinfo(basename($uri));
$name = isset($file['filename']) ? $file['filename'] : '';
$ext = isset($file['extension']) ? '.'.$file['extension'] : '';
$filenames = array(
$name . strtolower($ext),
strtolower($name) . $ext,
strtolower($name) . strtolower($ext),
strtolower($name) . strtoupper($ext),
$name . strtoupper($ext),
strtoupper($name) . $ext,
strtoupper($name) . strtoupper($ext),
strtoupper($name) . strtolower($ext),
);
foreach ($filenames as $filename) {
if (file_exists($dir.$filename)) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.dirname($uri).'/'.$filename);
exit();
}
}
not_found("{$uri} is not found.");

view raw
canonical.php
hosted with ❤ by GitHub

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中