• 締切済み

正規表現について

codeigniterを利用しており以下の事をしたいのですが実現できません。 以下URLでアクセスした場合にTop.phpというコントローラで第一引数と第二引数を受け取りたい。 http://example.com/ユニークID/ http://example.com/ユニークID/profile 現在はhttp://example.com/にアクセスするとTop.phpというコントローラのindexアクションが起動するようにしています。 今の所routes.phpに以下を記載した事で(http://example.com/ユニークID/)にアクセスした際にTop.phpが起動して、第一引数としてユニークIDを渡せています。 $route['^((?!hoge).)*$'] = "top/$0"; // さらに(http://example.com/ユニークID/profile)でアクセスした時に第二引数として 「profile」という文字を取得したいのですが正規表現がうまく作れません。 どうかご教授いただけないでしょうか。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 codeigniterを使ったことがないので推測となり恐縮ですが、 以下のような感じで指定してはどうでしょうか? #http://example.com/ユニークID/profile # ユニークID は 数値を想定。(\d+)にマッチし、$1に格納される # ユニークID/移行はa-zの文字列([a-z]+)にマッチし、$2に格納される $route['(\d+)/([a-z]+)']= "top/$1/$2"; 参考URLにもいくつかパターンが掲載されておりますので、 参考に頂ければと思います。

参考URL:
http://codeigniter.jp/user_guide_ja/general/routing.html

関連するQ&A

  • ServerNamedで正規表現は使えますか?

    ServerName www.example.com Redirect permanent / http://example.com/ としてwww.example.comでのアクセスをリダイレクトして今はしのいでいます。 これを ServerName (.*)\.example.com とか正規表現のつもりでやって「どんなマルチドメイン」でアクセスしてきてもhttp://example.com/ に集約しようと思ったのですができません。 どんなマルチドメイン(hoge.example.comとかpoge.example.comとか)でもexample.comのドメインであればhttp://example.com/に集約させたいです。 お分かりになる方いらっしゃいますでしょうか? vine linux 3.2 apache 1.3

  • .htaccessを特定のフォルダだけ無効にしたい

    .htaccessに以下のように書いて、 RewriteCond %{THE_REQUEST} ^.*/index.(html|php) RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L] 「http://example.com/hoge/index.php」などにアクセスされたときにindex.phpを削除して 「http://example.com/hoge/」を表示するようにしています。 例えば、以下にアクセスすると http://example.com/aaa/index.php http://example.com/bbb/index.html http://example.com/ccc/ddd/index.php?p=1 それぞれ以下のアドレスになります。 http://example.com/aaa/ http://example.com/bbb/ http://example.com/ccc/ddd/?p=1 これを、特定のアドレス「http://example.com/tokutei/index.php」にアクセスされたときだけ、 「http://example.com/tokutei/」にせず、そのまま「http://example.com/tokutei/index.php」を表示するようにしたいのですが、 どうすれば良いでしょうか。 「http://example.com/tokutei/index.php?p=1」や「http://example.com/tokutei/index.php?p=1&a=5」などにアクセスされても そのまま表示するようにしたいです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • htaccessで動的ページを301転送したい

    http://example.com/abc.php?v=4&p=12 にアクセスしてきたユーザーを http://example.com/xyz.php?v=4&p=12 に301転送したいです。 ただし、 ?以降はころころ数値が変わります。 例えば、?以降に以下のような数値がきた場合も http://example.com/abc.php?hoge=%fg%6d&p=aaa 同様に以下のように301転送をしたいです。 http://example.com/xyz.php?hoge=%fg%6d&p=aaa これを.htaccessを用いて行ないたいのですが、可能でしょうか? ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • [CakePHP] Paginatorのリンクが変

    CakePHPのPaginatorを使ったページリンクが正しく出力されません。 1ページ目は正しく出力できていますが、2ページ目などに移動した際にURLがおかしくなります。 現状 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/2/page:3 理想 1ページ目 http://www.example.com/hoge/2 ↓ 2ページ目 http://www.example.com/hoge/3 また、パラメータがついた場合も 1ページ目 http://www.example.com/hoge/2?hoge=hoge ↓ 2ページ目 http://www.example.com/hoge/3?hoge=hoge となるようにしたいのですが、何を間違えているのでしょうか。 ちなみにソースは以下のようになってます。 View/Hoge.php echo $this->Paginator->prev('< 前へ', array(), null, array('class' => 'prev disabled')); echo $this->Paginator->numbers(array('separator' => '')); echo $this->Paginator->next('次へ >', array(), null, array('class' => 'next disabled')); Config/routes.php Router::connect(     '/hoge/:page',     array(         'action' => 'hoge',     ),     array(         'pass' => array(             'page',         )     ) );

    • 締切済み
    • PHP
  • 1つのサーバで複数のドメイン管理

    AWS EC2を使ってウェブサーバを構築し、CakePHPをインストールしてウェブサイトを実装しております。 すでにドメインを2つ取得しており、それぞれのドメインでアクセスした際に、同じディレクトリにある2つのコントローラをそれぞれ実行させてページを表示させたいと思っております。 ドメイン(例) hoge.com fuga.com コントローラ(例) /lib/app/controllers/hoge_controller.php /lib/app/controllers/fuga_controller.php hoge.comに対しては、 routes.phpで Router::connect('/', array('controller' => 'hoge', 'action' => 'index')); と設定して hoge.comでアクセスした際にhogeコントローラのindexアクションが実行されるようにできましたが、この状態を維持しつつfuga.comでアクセスした際にfugaコントローラのindexアクションが実行されるようにできればと思っております。 cakephpやサーバの設定等は自由に行える環境ですので、cakephpのrouterやサーバのバーチャルホストの設定等で実現できますでしょうか。 お分かりいただける方いらっしゃいましたら、ご教授いただけますと幸いです。 以上、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • .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は適切ではないということであれば、より良い手段をご教示いただきたくお願い申し上げます。

  • サブディレクトリへのアクセス制限

    いつも大変お世話になっておりますm(__)m Webサイトでのサブディレクトリへのアクセスについて質問させて下さい。 http://example.com/form.html という問い合わせページがあるとします。このフォームは <form name='form' method='POST' action='hoge/sample.php'> という感じで、サブフォルダ「hoge」の「sample.php」というファイル(http://example.com/hoge/sample.php)へPOSTで送信するように作成しています。 この場合、ブラウザのアドレス欄に「http://example.com/hoge/sample.php」と直接入力すると、sample.phpが実行されてしまいます。 直接アクセスされた場合、または別のファイル(http://example.com/form.html以外)からPOST送信やアクセスされた場合にエラー表示など、制限する事は可能でしょうか?? .htaccessの設定など、いろいろ調べてみたのですが、良い方法が見つかりませんでしたので、お詳しい方、是非ともお力をお貸し下さい。 宜しくお願い致しますm(__)m

    • ベストアンサー
    • PHP
  • どなたかこの正規表現を変更してくれませんか?

    正規表現の素人で困っています。 s/(http:\/\/[0-9A-Za-z]+[\-\.\/0-9A-Za-z_~]*[\/0-9A-Za-z]+)([\x80-\x9f\xe0-\xfc].)?/<A HREF="$1">$1<\/A> という正規表現が「引数付きURLの引数部分(?より先)は無視する」 という内容になっていまして、?より先も含めるようにしたいのです。 現状だと以下のURLを例に http://test.japan.com/test.php?d=404861&c=c6 http://test.japan.com/test.php test.phpまでしか拾ってくれません。 どの様に書き換えればいいのでしょうか?

  • パラメータの前にスラッシュ

    example.com?hoge=1・・・① example.com/?hoge=1・・・② 上記URLで2種類のURLの違いは何でしょうか。 あるサイトに最初にアクセスした時は example.com/keyword?anyword=hoge の形式でしたが、 本日アクセスしたら、 example.com/keyword/?anyword=hoge の形式で keywordの前にスラッシュが付いたものに変わっていました。 なぜ、このような現象が起きたのでしょうか。 また、上記のURL①と②はアクセスしても同じ検索結果でした。

    • ベストアンサー
    • PHP
  • phpをshellから起動する際に引数を渡したい

    cronを使用してphpを起動するのですが、その際に引数を渡したいです。 webでアクセスする際は http://www.example.com/index.php?a=b とすることで $_GET['a'] に 「b」という値が入りますが、 これをshellで作成したいのです。 どなたかご存知の方教えていただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP