人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

下記のレスを見てもどうも上手くいかないので、質問します。

http://m.hogehoge.jp/kiji.chtml?k=1 というアドレスを
http://m.hogehoge.jp/k1/
という様に静的化したいのですが、どうも動作しません。

具体的には、mod_rewriteを使って動作させたいのですが、どの様に記述すればよいのでしょうか?
htaccessによる方法でも結構です。

OS:CentOS 5.3
言語:Perl 5.8

●質問者: 気分やPenguin
●カテゴリ:インターネット ウェブ制作
✍キーワード:CentOS mod_rewrite OS Perl アドレス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ラフティング
●27ポイント

http://q.hatena.ne.jp/1179885361

http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html

mod_rewriteの基本

ひとまず、mod_rewriteはApacheのモジュールです。

インストールされていなければ、サーバのroot権限が無い限り新たにインストールすることは難しいかと思います。

インストールされている場合、使用するには2つの方法があります。

* httpd.confに設定する

* .htaccessに設定する

しかし、.htaccess による設定は処理が遅くなります。root権限があるなら、httpd.confで設定しましょう。

mod_rewriteを利用したり、設定する記述は、テキストとして書き込みます。

バーチャルサーバを使用している場合は、バーチャルサーバごとに記述する必要があります。

http://maihy.com/hp/phptech/phptech_url_rew.html

◎質問者からの返答

VPSですので、インストール等は可能なんです。mod_rewiteもインストールされているんですが、どうも動作自体していないようなんです


2 ● ホーエンハイム
●27ポイント

ディレクトリ構造が分からないのですが、.htaccess内で下記のように記述してみてください。

RewriteEngine on
RewriteRule kiji.chtm?k=(.*)$ /k$1/ [L]
◎質問者からの返答

具体的な記述をありがとうございます。試してみます・・・

試してみましたが、まるで何も無かった様に動作しません。

何かhttpd.conf側で設定すべきことなどあるのでしょうか?

httpd.confの内容

<Directory /var/www/vhosts/hogehoge.jp/subdomains/m/httpdocs>

AllowOverride All

Options FollowSymLinks Includes

Options +ExecCGI

AddHandler cgi-script .chtml

AddHandler cgi-script .cgi

AddType application/xhtml+xml .html

AddType application/xhtml+xml .chtml

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /var/www/vhosts/hogehoge.jp/subdomains/m/httpdocs

RewriteRule kiji.chtm?k=(.*)$ /httpdocs/k$1/ [L]

</IfModule>

error_logの内容

[Fri Apr 30 17:43:10 2010] [error] [client 113.36.44.202] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/vhosts/hogehoge.jp/subdomains/m/httpdocs/ga.pl, referer: http://m.hogehoge.jp/kiji.chtml?k=4

ga.plは直接関係が無いので、このログが有効かわからないのですが、どうも動作していないんです。

困った困った


3 ● ホーエンハイム
●26ポイント

まずは mod_rewrite が動いているかどうか確認してみてください。

.htaccess に下記のように記述し、有り得ないページにアクセスしてください。mod_rewriteが動いていればYahooへ、そうでなければ Googleにジャンプします。

<IfModule mod_rewrite.c>
 ErrorDocument 404 http://www.yahoo.co.jp/
</IfModule>
<IfModule !mod_rewrite.c>
 ErrorDocument 404 http://www.google.co.jp/
</IfModule>
◎質問者からの返答

ご親切にありがとうございます。

Yahoo(動いている方)でした。

ということは、やはり何らかの記述方法という問題になるということですね。

>2の方の記述も間違いないと思いますし、どこに問題が・・・



その後これをヒントに

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteRule ^(.*).html$ /var/www/vhosts/hogehoge.jp/subdomains/m/httpdocs/kiji.chtml?k=$1 [L]

</IfModule>

という記述をhtaccessに入れてみました。

すると、なんとなく動いたんです!

所が、http://m.hogehoge.jp/1.htmlへアクセスすると

/kiji.chtml?k=$1の引数「K」に「kiji.」とだけ代入されるのです。

これさえ何とかなればOKなのですが。。。


さらに手を加えました所成功しました!

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteRule ^(.*)\.html$ /var/www/vhosts/hogehoge.jp/subdomains/m/httpdocs/kiji.chtml?k=$1 [L]

</IfModule>

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ