URL Rewriting

KanboardはURL rewritingが有効/無効にかかわらず動作可能です。

  • URL rewriteで書き換えられたURLの例: /board/123
  • それ以外: ?controller=board&action=show&project_id=123

KanboardをApache上で使用していて、rewriteモードが有効な場合、自動的に分かりやすいURLを使用します。“404 Not Found”を返された場合、少なくとも DocumentRootへ.httaccessファイルが効くように、以下のようにオーバーライドする必要があります。

<Directory /var/www/kanboard/>
    AllowOverride FileInfo Options=All,MultiViews AuthConfig
</Directory>

URL ショートカット

  • タスク #123 を表示: /t/123
  • プロジェクト #2 のボードを表示: /b/2
  • プロジェクト #5 のカレンダーを表示: /c/5
  • プロジェクト #8 のリストビューを表示: /l/8
  • プロジェクト #42 のプロジェクト設定を表示: /p/42

設定

デフォルトでは、KanboardはApacheがrewriteが有効かチェックします。

WebサーバーのURL rewriteの自動検出を回避するには、以下のように設定ファイルに記述します。

define('ENABLE_URL_REWRITE', true);

この定数を true にした場合:

  • また、コマンドラインツールからも変換されたURLを生成します。
  • NginxかMicrosoft IISのような、Apacheではないwebサーバーを使用しているなら、あなた自身がURL rewitingの設定をしなければなりません。

注意: Kanboard はこの設定ができていない場合、いつでも従来通りのURLにフォールバックします。この設定は任意です。

Nginx での設定例

Nginxの設定ファイルの server セクションで使用可能な例:

index index.php;

location / {
    try_files $uri $uri/ /index.php$is_args$args;

    # If Kanboard is under a subfolder
    # try_files $uri $uri/ /kanboard/index.php;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
}

# Deny access to the directory data
location ~* /data {
    deny all;
    return 404;
}

# Deny access to .htaccess
location ~ /\.ht {
    deny all;
    return 404;
}

Kanboard 内の``config.php`` では:

define('ENABLE_URL_REWRITE', true);

Kanboardがサブフォルダに入っているときの例:

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    root /var/www/html;
    index index.php index.html index.htm;
    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ^~ /kanboard {

        location /kanboard {
            try_files $uri $uri/ /kanboard/index.php$is_args$args;
        }

        location ~ ^/kanboard/(?:kanboard|config.php|config.default.php) {
            deny all;
        }

        location ~* /kanboard/data {
            deny all;
        }

        location ~ \.php(?:$|/) {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on; # Use only if HTTPS is configured
            include fastcgi_params;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

        location ~ /kanboard/\.ht {
            deny all;
        }
    }
}

先ほどの例を参考に、あなたの環境に合わせて設定してください。

Lighttpd での設定例

1. "mod_rewrite" を有効にする

server.modules += (
    "mod_rewrite",
    ...
    ...
)

2. Add url rewrites to the relevant sections of your lighttpd.conf (in this case, for host example.com). Also keep the assets directory and the favicon static: 2. lighttpd.confの関連するセクションにurl rewritesを追記する(この例では、ホストは example.com)。 また、assetsディレクトリを保持し、faviconを固定する場合では:

$HTTP["host"] == "example.com" {
  server.document-root = "/var/www/kanboard/"
  url.rewrite-once = (
    "^(/[^\?]*)(\?.*)?" => "/index.php$2",
    "^/assets/.+" => "$0",
    "^/favicon\.png$" => "$0",
  )
}

3. Lighttpd config を再読み込みする:

/etc/init.d/lighttpd reload

IIS での設定例

  1. ここ からIISの Rewrite モジュールをダウンロードしてインストールする:
  2. インストール先フォルダに web.config ファイルを作る :
<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <defaultDocument>
            <files>
                <clear />
                <add value="index.php" />
            </files>
        </defaultDocument>
        <rewrite>
            <rules>
                <rule name="Kanboard URL Rewrite" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Kanboard 内の``config.php`` では:

define('ENABLE_URL_REWRITE', true);

先ほどの例を参考に、あなたの環境に合わせて設定してください。