• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.htaccess の RewriteRule で、引数が10個以上あ)

.htaccess の RewriteRule で、引数が10個以上ある場合の書式について

このQ&Aのポイント
  • .htaccess の RewriteRule で、引数が10個以上ある場合の書式について調査しています。具体的には、16個の引数を渡す方法について知りたいです。
  • 現在の記述方法では、引数が10個以上ある場合にうまく表現できないとのことです。解決策として、どのように記述すれば良いか教えてください。
  • .htaccess の RewriteRule で、引数が10個以上ある場合、正しい形式で記述する方法を教えてください。現在の記述方法では表現できないため、解決策を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

mod_rewriteの後方参照は $N(N=0..9) で 「$0から$9まで」と決まっているようですね。 http://net-newbie.com/trans/mod_rewrite.html 対処法としては、 RewriteRule ^example_(.+).html$ example.php?args=$1 と全部まとめて飛ばして example.php側で split('_',$_GET[args])等で処理する方が簡単かと思いますよ。 (ただこちらのサーバでは16個でもOKでしたのでApacheまたは正規表現のバージョンの違いでしょうか。)

stolichnaya
質問者

お礼

確かにその方がずっと簡単そうですね・・・ 良いアイデアをありがとうございました。 大変助かりました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • .htaccessのRewriteRuleの記述

    .htaccessのRewriteRuleの記述方法について質問です。 以下のようなURL移転があったので、RewriteRuleを記述したいのですが、どのように記述すればよろしいでしょうか? 【旧URL】 http://example.com/hoge/hoge.php?id=数字 【新URL】 http://example.com/foo.php?var=1&id=数字 ※数字は対応しています(同じページは同じ数字が入ります)。 なお、私なりにググってみて、以下のように記述したのですが、動きませんでした。 Options +FollowSymLinks RewriteEngine on RewriteRule /hoge/hoge\.php\?(.+) http://example.com/foo.php?var=1&$1 [R=301,L] また、上記のような場合は、そもそもRewriteRuleは適切ではないということであれば、より良い手段をご教示いただきたくお願い申し上げます。

  • .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のままにしたいのですが。 どのように記述したらよろしいのでしょうか。

  • .htaccessにRewriteRuleの設定

    .htaccessにRewriteRuleでスマホページの対応をしたいと考えています。 PCサイト: http://example.com/ スマートフォンサイト: http://example.com/sp/ にするには RewriteRule ^(.*)$ sp/$1 [R] でいけるのですが、 PCサイト: http://example.com/aaa/ スマートフォンサイト: http://example.com/aaa/sp/ にしたい場合どのようにすればよろしいでしょうか? ちなみに/aaa/の部分は/bbb/や/ccc/に変わることもあります。 RewriteRule /(.*)/(.*)$ /$1/sp/$2 [R] など色々やってみたもののうまくいきませんでいた。 どのようにすれば実現できる分かる方いらっしゃいましたら、ご教授お願いします。

  • RewriteRuleの書き方

    http://hoge.com?ab=111&cd=222 でアクセスした場合、 http://hoge.com/111/cd/222 にリダイレクトさせたいと考えております。 RewriteCond %{QUERY_STRING} ab= [NC] RewriteRule ^/?ab=([0-9a-zA-Z]+)&([0-9a-zA-Z]+)=([0-9a-zA-Z]+)$ /$1/$2/$3 [R] RewriteCond で、QUERY_STRING に ab= が含まれているとき、 RewriteRule を適用する のように書いても上手くいきませんでした。 お手数ですが、どなたかご教示いただければ幸いです。 よろしくお願いいたします。

  • .htaccessでのRewriteRuleが下層ディレクトリに効かない

    現在一番上の階層にドメインを適用しており、そこでwww有りと無しを統一する為、.htaccessに以下のように記述しています。 RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.example\.com)(:80)? RewriteRule ^(.*) http://example.com/$1 [R=301,L] これで、http://www.example.com/ は http://example.com へ、 下層ディレクトリの http://www.example.com/sample/ は http://example.com/sample/ と、 上記のようにリダイレクトしてくれますが、下層ディレクトリの中に掲示板スクリプトを設置しているものがありまして、 そのディレクトリ(/bbs)の中にも、スクリプトのURL書き換えの為のRewriteRuleを記述した.htaccessを設置しています。 ※このディレクトリ(/bbs)のRewriteRuleには、RewriteCond %{HTTP_HOST} は記述していません。 ここで困った事に、http://www.example.com/bbs/ にアクセスすると、そのままwwwが付いたURLがそのままアドレスバーに表示され、 www無し(http://example.com/bbs/)にリダイレクトしてくれません。 .htaccessを設置していない(RewriteRuleを記述していない)下層ディレクトリは、上層ディレクトリに記述しているRewriteRuleの継承をしてくれる為、http://example.com/sample/ のように表示(リダイレクト)されますが、上記の/bbs ディレクトリなどに対しても、上層のRewriteRule を引き継げる方法は無いでしょうか? 色々調べて、RewriteOptions inherit というのも見つけたのですが、/bbs ディレクトリの.htaccessに記述しても、 トップページ(http://example.com/)へリダイレクトされてしまい、どうすれば良いか悩んでおります。 環境は共用レンタルサーバで、 Apacheのバージョンは1.3.39 (Unix)。 httpd.confは自分では設定する事が出来ません。 上層ディレクトリのRewriteRuleを引き継げない場合、/bbs ディレクトリの.htaccessにはどのように記述すれば www無し(http://example.com/bbs/)になるのかでも勿論構いません。 もし良い方法がありましたらご教示頂けますと幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • 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
  • .htaccessのRewriteRuleについて

    いつもお世話になっています、mahimahi02です。 .htaccessを使ったよくある書き換えなのですが、なぜかうまくいきません。 内容: ドメイン/dir/manager/menu1.htmlというURLで ドメイン/dir/manager.php?menu=1を実行したい。 現在のdir内の.htaccess: RewriteEngine on RewriteRule ^/manager/menu([0-9]+)\.html$ /manager.php?menu=$1 [L] 症状: そもそも動いていないように見受けられる。 直接、ドメイン/dir/manager.php?menu=1をたたけば$_GET['menu'] == 1 として正常に解釈されているが、ドメイン/dir/manager/menu1.htmlをたたくとvar_dump($_GET)内が空になってしまっていてその他の表示になってしまう。 サーバ会社にも問い合わせをし、mod_rewriteが正常に動いていることは確認したのですが、記述なども含めて対応策がお分かりになる方がいらっしゃいましたら是非ご教授願います。

    • 締切済み
    • PHP
  • 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)-----

  • htaccessでmod_rewrite

    htaccessに下記のように記述しました。 RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?p=$1 [L] RewriteRule ^([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/$ index.php?p=$1&m=$2 [L] RewriteRule ^([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/$ index.php?p=$1&m=$2&y=$3 [L] RewriteRule ^sample/test/([0-9A-Za-z_]+)/$ sample/test.php?id=$1 [L] すると 「http://www.○○○.jp/index.php?p=●」 は 「http://www.○○○.jp/●/」 「http://www.○○○.jp/index.php?p=●&m=△」 は 「http://www.○○○.jp/●/△/」 「http://www.○○○.jp/index.php?p=●&m=△&y=■」 は 「http://www.○○○.jp/●/△/■」 でアクセスできました。 が、 「http://www.○○○.jp/sample/test.php?id=★」 は 「http://www.○○○.jp/sample/test/★/」 でアクセスできません。 おそらく、 「http://www.○○○.jp/sample/test/★/」を 「http://www.○○○.jp/index.php?p=sample&m=test&y=★」 として認識しているためだと思いますが、 対策がわかりません。 このような場合は、どう対処すればよいのでしょうか。

    • ベストアンサー
    • PHP
  • WordPressの.htaccessについて

    こんにちは。 wordpressでマルチサイトの環境を設定しようとしています。 ネットワークの設置より、次のような.htaccessを/wordpress/ディレクトリに配置しました。 --- RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] --- このファイルを配置しなくても、 http://domain.jp/wordpress/wp-admin/network/setup.php や http://domain.jp/wordpress/wp-admin/network/users.php は表示されますし、 http://domain.jp/wordpress/ にアクセスすると1つ目のブログが表示されます。 しかしこのファイルを配置しない場合、新たに作成した2つ目のブログである http://domain.jp/wordpress/test01/ は表示されません。ファイルを配置した場合は表示されます。 しかし、ディレクトリを見ても/wordpress/にはtest01ディレクトリは存在しません。おそらくは何らかの転送を行っているのだと思いますが、上記の.htaccessファイルを配置した場合、 http://domain.jp/wordpress/test01/ はどういう法則で、どこに転送されるのでしょうか。 どなたか教えてください。よろしくお願いいたします。

    • 締切済み
    • PHP