• 締切済み

htaccessについて

ライブドアのレンタルサーバでHPを運用しています。 その中で、PHPを使って外部ファイルからテキストを取得して画面に表示するスクリプトを作りたいと思います。例えば、「001.txt」を取得したい場合は、GETパラメータの「file」に「001」を渡せば取ってくる感じです。 それを、mod_rewrite関数を使ってURLを書き換えたいのですが、.htaccessに以下を記載してもどうもうまく動きません。 ---------------------------------------------------------- RewriteEngine On RewriteRule ^/test/***/([a-z0-9_]+)$ /test/***/execute.php?file=$1 ---------------------------------------------------------- 試しにローカルのxamppのhttp.confに同じように記載したのですが問題なく動きます。レンタルサーバは.htaccess対応と書いてあるので、サーバ設定の問題でもなさそうですが。。 ご教授願います。

みんなの回答

noname#130824
noname#130824
回答No.1

RewriteEngine On RewriteRule ^test/***/([a-z0-9_]+)$ test/***/execute.php?file=$1

参考URL:
http://xn--u8jxb9ib9150b2px.jp/htaccess/rewritecgi/

関連するQ&A

  • 正規表現の際、特定の単語を除外したい

    apacheのmod_rewriteでURLを書き換えたいと思っています。 以下が.htaccessのコードになります。 ------------------------------------------------------------------------- RewriteEngine On RewriteRule ^([a-z0-9_-]+).htm$ execute.php?id=$1 ------------------------------------------------------------------------- 例えば、”http://moge/test.htm”にアクセスすると”http://moge/execute.php?id=test”と同じようになるというものです。 ディレクトリにはexecute.phpの他にindex.htmを置きたいと思っているのですが、上のhtaccessを設置すると、”http://moge/execute.php?id=index”に飛ばされてしまいます。そこで、正規表現で特定の単語(index)を除外するにはどうすればいいのでしょうか? ご回答お願いします。

  • htaccessが作動しません

    初心者です。よろしくお願いします。 さくらのレンタルサーバーを利用しているのですが.htaccessをアップロードしても反映してくれません。 今、http://oshiete1.sakura.ne.jp/aaa.php?usr_no=1&log_no=11 のように最後がphpなどで終わっているものを~htmlで終わらせるようにしたいのですが上手くいきません。 ちなみにどこかのサイトを参考にして、.htaccessファイル以下を記述しアップしてみました。 DirectoryIndex mod_rewrite.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ mod_rewrite.php?var1=$1&var2=$2 [L] しかし何も起こりませんでした。 よろしくお願いします。

    • 締切済み
    • PHP
  • mod_rewrite(.htaccess)で静的化したいのですが。。

    mod_Rewrite(.htaccess)を使って静的化をしようとしています。 設定内容は、以下にしています。 --------------------- ■httpd.conf DocumentRoot "/var/www/html/" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html/"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> --------------------- ■.htaccess RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- 上記の設定だと次ページが表示されません。 また、httpd.confの設定に以下を追加すると正常に次ページが表示され、URLの静的化されます。 --------------------- RewriteEngine on RewriteRule ^/free/([0-9,a-z,A-Z]+)$ /free/index.php?action=$1 --------------------- .htaccessが有効になっていないか、もしくは.htaccessの格納場所が間違えているかと 思っているのですが、いろいろ試してみましたが結局うまくいきません。 .htaccessの格納場所は、http://ローカルIP/free/配下に置いてあります。 どなたかご存知の方はいらっしゃいますでしょうか。 上記の設定内容だけだと情報が足りないなどございましたら、おっしゃってください。 宜しくお願い致します。

  • .htaccessでRewriteRule

    .htaccessでパラメータ付のアドレスにRewriteRuleしたいのですが。 例えば test.phpにアクセスされた場合、test.php?id=5 としたいのですが。 現状、下記のように.htaccessに記述したのですがうまくいきません。 RewriteEngine On RewriteRule ^test.php$ /test.php?id=5 [R=301,L] また、test.phpにはパラメータ付(test.php?id=1)でアクセスされる場合もあります。 その場合には、test.php?id=1のままにしたいのですが。 どのように記述したらよろしいのでしょうか。

  • mod_rewriteで$_GETが受け取れない

    mod_rewriteで$_GETが受け取れない現象の原因が分からず、困っています。 前の質問は、内容に間違いがあったため、削除して書き直します。 公開サーバはVineLinux3.2でApache2を動かしています。 ドキュメントルートに以下の内容の.htaccessを配置しています。 RewriteEngine on RewriteRule ^index/([a-z0-9A-Z_]*)?$ index.php?action=$1 RewriteRule ^index/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)$ index.php?action=$1&type=$2&value=$3 ところが、 index/hogehogeにアクセスしても、 index.phpの結果しか返ってきません。 index.phpでvar_dump($_GET);を実行した結果は、 array(0) {}となります。 WindowXP + XAMPP1.6.6a で構築したローカル環境では期待通り、 index/hogehogeにアクセスすることでindex.php?action=hogehogeの結果が返ってきます。 どこに原因があるのか全く分からず、困っております。 宜しくお願いします。

  • htaccess の rewriterule でカタカナが入っているURLを使いたい

    htaccess の rewriterule でカタカナが入っているURLを 使いたいのですが、htaccessファイルがUTF-8で保存できないため困っています。 wikiフォルダへのrewriteは動作しています。 redirect ではなく rewrite で行いたいです。 何かいい方法がありませんか? ※htaccessサンプル RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.aaa\.com) RewriteRule ^/?(.*) http://www.aaa.com/wiki/メインページ [R=301,L]

  • RewriteRule有効について(Apache設定)

    Apache2をWindows2kにインストールし運用しています。 RewriteRuleを行うが有効になりません。 httpd.confと.htaccessは、以下のように記述しています。 .htaccessは、レンタルサーバーに転送しテストすると正常に動作します。 と言うことは、ローカルサーバーの環境設定がまずいと言うことになるかと思うのですがどうしても分かりません。 ご教授の程、宜しくお願いします。 -----(httpd.conf)----- Options All AllowOverride All LoadModule rewrite_module modules/mod_rewrite.so -----(httpd.conf)----- -----(.htaccess)----- RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^info.html+ info.php RewriteRule ^k/index.html$ k/index.php RewriteRule ^k/([0-9A-Za-z]+)/$ k/index.php?id=$1 -----(.htaccess)-----

  • CentOSでhtaccessを使用してmod_rewrite

    CentOSで、htaccessを使用してmod_rewriteを利用したいのですが、いまいちどうしたらいいのかがわかりません。 動的URLを静的URLに変換したく、 htaccessに RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] と書きこみました。 すると404エラーがでます。 試しに #RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?t=$1 [L] とコメントアウトしたところ、通常に表示されました。 RewiteEngine on が何かしらの影響を与えていると思うのですが、 対策がよくわからないので質問いたしました。 ちなみにhttpd.confの設定は完了しています。 LoadModule rewrite_module modules/mod_rewrite.so と記述。

  • .htaccessリダイレクトでの#や&について

    ハマってしまいました。ご教授ください。 .htaccessに #(%23) や &(%26) をエンコードしたものを渡すと、返りがなくなってしまうのですが、 引き継ぐ方法はないでしょうか? NEフラグをつけても駄目でした。 以下の検証で試してます。 [.htaccess] RewriteEngine On RewriteRule ^([0-9a-z]{1,10})/(.*)$ x.php?q=$2 [NE,L] [x.php] <?php echo $_GET['q']; ?> http://hogehoge.com/xxx/%23 とアクセスすると、 何も表示されません。 http://hogehoge.com/x.php?q=%23 とアクセスすると、 「#」 と表示されます。

  • mod_rewriteでアドレスを書き換えたい

    mod_rewriteでアドレスを書き換えたい思っています。 xamppでテストしていますがうまくいきません。 mod_rewrite.soの#は外しています。(つまり、.htaccess以外の設定はできていると思います) 【やりたい事】 localhost/test/index.php?p=test を  ↓ localhost/test/i/test でアクセスしたいです。 【参考にした情報】 http://www.sample.com/cgi-bin/sample/sample.cgi?a=123&b=456 というURLを静的なアドレスでアクセスできるように以下のように設定します。 RewriteEngine on RewriteRule ^/cgi-bin/sample/([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ /cgi-bin/sample/sample.cgi?a=$1&b=$2 [L] を言うのを見つけました。 【試したこと】 .htaccessをつくり RewriteEngine on RewriteRule ^/test/i/([0-9A-Za-z)]+)$ /test/index.php?p=$1 [L] と記入 【結果】 Object not found! 要求された URL は本サーバでは見つかりませんでした。 もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。 と表示されました。 ------------------------------------------------------------------ localhost/test/i/testでアクセスするには、.htaccessをどう書けばいいのでしょうか? 疑問1.xamppでlocalhostでmod_rewriteができるのだろうか? 疑問2.参考にした情報のRewriteRuleの"^"がわからない。正規表現の"^"とは文頭にマッチすると思います。この場合の文頭とは? よろしくお願いします。