PukiWikiのhtaccessファイルの設定変更

Pukiwikiをサーバーに設置した場合、ドメインルートの.htaccessファイルを使って各種アクセス制限やトップページのURLの一本化(正規化)をします。その他のファルへの直接アクセス制限をします。また、トップページのURLから「?FrontPage」を取り除いて、トップページへのアドレスの一本化(正規化)をします。

htaccessファイルの設定変更

Pukiwikiを サーバー楽天 に設置した場合、ドメインルートの.htaccessファイルを使って各種アクセス制限やトップページのURLの一本化(正規化)をします。

なお、これらの設定はURLにサブドメインを使った場合で、サブディレクトリを使った場合の動作は確認していません。

htaccessファイルとhtpasswdのファイルへの直接アクセス制限をします。

# Prohibit direct access to .htaccess, .htpasswd or others
# (If it's not set by default)
<FilesMatch "^\.ht">
	Order allow,deny
	Deny from all
</FilesMatch>

その他のファルへの直接アクセス制限をします。

# Prohibit direct access
<FilesMatch "\.(ini\.php|lng\.php|txt|gz|tgz|zip)$">
	Order allow,deny
	Deny from all
</FilesMatch>
 
# Allow direct access to robots.txt
<FilesMatch "^robots\.txt$">
	Order Deny,Allow
	Allow from all
</FilesMatch>

トップページのURLから「?FrontPage」を取り除きます。

ページを指定しない場合、「index.php」を取り除いてあっても、URLはhttp://hogehoge.jp/?FrontPageというアドレスになりますので、トップページから「?FrontPage」を取り除きます。URLは短い程良いとの考えと、SEOの観点から複数のアドレスで同じページにアクセスしないようにする為です。

.htaccessファイルでやる方法

.htaccessファイルに次の記述を追加します。PukiWikiをサブディレクトリに設定した場合です。

RewriteEngine on
# Remove '?FrontPage'
RewriteCond %{QUERY_STRING} ^FrontPage$
RewriteRule ^(.*)$ /$1? [R=301,L]

(lib/html.php)でやる方法も適用します

lib/html.phpの59行目付近を次のように変更します。しかし、この方法だけでは「?FrontPage」を取り除いたアドレスが生成されますが、「?FrontPage」を付加してアクセスすると「?FrontPage」が表示されてしまいます。

//	$_LINK['top']      = "$script?" . rawurlencode($defaultpage);
	$_LINK['top']      = "$script";

トップページへのアドレスの一本化(正規化)をします。

トップページへのアドレスが次のどれでもアクセス可能なので、「index.php」を取り除いて下の2つの場合のみにリダイレクトします。これはSEO対策です。複数のURLで同じページが表示されないようにします。
http://hogehoge.jp/index.php?
http://hogehoge.jp/index.php
http://hogehoge.jp/?
http://hogehoge.jp/

# Remove index.(php|htm|html)
RewriteCond %{THE_REQUEST} (^.*/index\.php|^.*/index\.htm)
RewriteRule ^(.*)index\.(php|htm) /$1 [R=301,L]

ページの編集等の権限をベーシック認証にします。

<Limit POST>
require valid-user
AuthName "Please enter user name and password"
Authtype Basic
AuthUserFile /.htpasswdファイルへの絶対パス
</Limit>