Cool URI を利用するためにhtaccessを修正する

\wという正規表現が効かない

互換モジュールの全般設定(1)の中に、「Cool URI を利用する」というオプションがあります。

Cool URI を利用する

お使いのサーバが apache の mod_reweite に対応していれば、このオプションを使うことが出来ます。mod_rewrite による .htaccess の設定については、.htaccess 設定 を参照ください

参照すべき「.htaccess 設定」とは、互換レンダーシステムのhtaccess設定表示(2)のこと。.htaccessに加えるべき行がずらりと並んでいます。たとえばこんな感じ:

RewriteRule ^(\w+)/(\d+)$ XOOPS_ROOT_PATH/modules/$1/index.php?requested_data_id=$2 [L,QSA]

(XOOPS_ROOT_PATHは実際のファイルパスです)

しかし、これがうまく働きません。試行錯誤の結果、\wや\dという正規表現がマッチしていないことがわかりました。

\wはPerl固有の表現で、Apache1.3では使えない

ウィキペディアによれば、\wはPerl固有の文字クラスの一つです。

\w
アルファベット、数字またはアンダーバー、つまり [a-zA-Z_0-9] (ロケールに依存し、例えばウムラウト付き文字などの扱いが変わる)

Perlの正規表現(PCRE)はとても普及していて、現時点での最新版であるApache2.4のドキュメントによれば、Apacheのmod_rewriteもPCREを使っています。

Regular Expressions

mod_rewrite uses the Perl Compatible Regular Expression vocabulary.

しかし、当サイトが使っているApache1.3で使われているのは……POSIXでした。

RewriteRule
書式: RewriteRule Pattern Substitution
Pattern は現在の URL に適用される (Apache 1.1.x では System V8、Apache 1.2.x 以降では POSIX の)正規表現です。 

がーん。ということで、\wを[a-zA-Z0-9_]に、\dを[0-9]に置き換えることにしました。

 

(サイト/システム情報)
XC Legacyバージョン : XOOPS Cube Legacy 2.2.2
オペレーティングシステム : FreeBSD
サーバー : Apache/1.3.42 (Unix)
PHPバージョン : 5.2.17
MySQLのバージョン : 5.1.66-log


  1. XOOPS_URL/modules/legacy/admin/index.php?action=PreferenceEdit&confcat_id=1
  2. XOOPS_URL/modules/legacyRender/admin/index.php?action=HtaccessView

友達に伝える
タグ: XOOPS htaccess
作成: 2013/9/22 by:koji
更新: 2013/9/25 by:koji


サーバから送信するWebページを圧縮する

Tech

XOOPSのDB接続だけを使う

新規ユーザー登録(無料)

  • メールニュース[週刊起-動線]の購読
  • コメントなどの投稿
  • ココロミの利用
  • 一部コンテンツの購読

ログイン

コメント

タグ(キーワード)