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


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

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

OS:CentOS 5.3
言語:Perl 5.8

回答の条件
  • 1人20回まで
  • 13歳以上
  • 登録:2010/04/30 05:09:21
  • 終了:2010/05/07 05:10:02

回答(3件)

id:rafting No.1

ラフティング回答回数2648ベストアンサー獲得回数1762010/04/30 06:16:10

ポイント27pt

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

id:dcm83491

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

2010/04/30 15:58:19
id:Bombastus No.2

ホーエンハイム回答回数409ベストアンサー獲得回数522010/04/30 11:41:31

ポイント27pt

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

RewriteEngine on
RewriteRule kiji.chtm?k=(.*)$ /k$1/ [L]
id:dcm83491

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

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

何か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は直接関係が無いので、このログが有効かわからないのですが、どうも動作していないんです。

困った困った

2010/04/30 17:47:14
id:Bombastus No.3

ホーエンハイム回答回数409ベストアンサー獲得回数522010/04/30 21:36:52

ポイント26pt

まずは 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>
id:dcm83491

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

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>

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

2010/04/30 23:42:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません