• 締切済み

RewriteRuleの書き方

いつもお世話になっております。 プログラムはある程度かけるのですが、サーバー周りが全く無知です。 .htaccess についてご教授願います。 RewriteRuleで二重で実行するにはどうしたら宜しいでしょうか。 [既存のRewriteRule] RewriteRule ^(.*)__(.*)/.*\.html$ /php/index..php 上記実行後、templateでindex.htmlとなります。 それを再度Rewriteしたいと思っています。 追加で下記を記述しましたが、うまくいきません。 RewriteRule ^(.*)__(.*)/index.html$ /$1/$2/index\.html [L] お手数ですが、宜しくお願い致します。

みんなの回答

回答No.1

これのどこがPHPの質問?ApacheのモジュールがどうしてPHPと関係している?

prr4e
質問者

補足

PHPではないのですが、過去の質問者の方をみたのものありますし、 別のカテゴリで登録したところ回答が得られなかったので、 こちらにしました。 PHPで開発中であったと言う事もあってですが。

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

関連するQ&A

  • 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のRewriteRuleについて

    RewriteRuleを用いて ・条件1.PHPで開発したホームページを表示しつつ,index以外の直リンクを禁止 ・条件2.ルートディレクトリ/phpMyAdmin/と指定した時はphpMyAdminに接続 と言うルールを書きたいのですが, RewriteRule ([^\/].*)\.php$ /index.php?mjs=$1 [L] RewriteRule ([^\/].*)\.php\?.*$ /index.php?mjs=$1 [L] RewriteRule ^$ /index.php?mjs=login [L] で条件1が満たせました. ここで,条件2を満たすために RewriteRule ^/phpMyAdmin/(.*)$ /phpMyAdmin/(.*)$ [L] と追加したら/phpMyAdmin/index.phpに飛ぶはずが/phpMyAdmin/login.phpへと飛んでしまい,「このアドレスへのリクエストに対するサーバのリダイレクト設定がループしています。」とエラーが帰ってきてしまいました. 仕事の合間にかれこれ一週間近く調べては居るのですが,どうすれば条件2が満たせるようになるのか,解決の糸口が見つかりません. 何方か,御助言頂けないでしょうか. 宜しくお願いします.

  • .htaccessのRewriteRuleエラー

    PHPのフレームワークを使って、サイトを作成しているのですが、 .htaccessの設定でつまずいております。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php 上記のコードはフレームワークを使う時の お決まりのようなコードなのだと思うのですが、 これはコピペして問題無く動作しております。 ※このコードは下記ページのものをコピペしました。 http://www.yiiframework.com/doc/guide/1.1/ja/topics.url#sec-7 しかし、この既存の.htaccessファイルに下記の通り、 www無しのアクセスをwww有りのurlに転送させるための コードを追加すると、サイト内のリンクが切れてしまいます。 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{HTTP_HOST} ^mydomain.com //これを追加した RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L] //これを追加した RewriteRule . index.php 記述方法が誤っているのだと思うのですが、どのように記述すれば、 正常に動くのでしょうか?

    • ベストアンサー
    • PHP
  • .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のままにしたいのですが。 どのように記述したらよろしいのでしょうか。

  • プログラムのクエリーをRewriteRuleの正規表現で書き換え

    ページを検索エンジンに登録させるために URLのクエリー以下(?からうしろ)を.htaccessのRewriteで書き換えて「/」区切りでアクセスさせようと思っています。 http://***.domain.com/program.html?a=1&b=2&c=3 ↓ http://***.domain.com/program/a/1/b/2/c/3.html 大抵このような場合 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5&$6=$7&$8=$9&$10=$11 [L] RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5&$6=$7&$8=$9 [L] RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5&$6=$7 [L] RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)\.html$ $1.html?$2=$3&$4=$5 [L] RewriteRule ^(.*)/(.*)/(.*)\.html$ $1.html?$2=$3 [L] のように追加していく書き方が簡単だと思うのですが、クエリーの数が多く正規表現の「()」で参照する変数が$10を超えてしまい上手く参照できません。 クエリーがいくら追加されても対応できる汎用性のある記述を作ろうと思っています。 何か良い方法があったら教えて下さい。

    • 締切済み
    • PHP
  • ApacheのRewriteRuleについて

    ApacheのRewriteRuleで困っています。 以下のURLを /gr/15bd60625f36edee4051b82e021d7a7f1137487409.php?categoryID=1&TitleID=38 このようなURLに置き換えて実行させようと思っています。 /grco/index.php?cat=1&id=38 mod_rewriteを導入し(動作確認済み) Apacheのhttpd.confに以下の定義を追加しいろいろと やっていますが・・うまくいきません。 URLの?がうまく処理できていないようです。 引数部分の置き換えができていません。 RewriteRule ^/gr/(.*)(.\.php)([^\?]*)(.*)$ /grco/index.php?cat=$1&id=$2 [L] 何か指定に問題があるのでしょうか? お手数ですが、ご存知の方がいらっしゃいましたら アドバイス等いただければと思います。 よろしくお願いします。

  • .htaccessのRewriteRuleの設定

    Sabelというフレームワークでtest用プロジェクトを作成して、 testフォルダ  addonフォルダ  appフォルダ     ・     ・     ・  publicフォルダ   .htaccessファイル というフォルダ構造で、publicフォルダの中に.htaccessファイルがあり内容は [.htaccessファイル] <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} \/\..+$ RewriteRule .* /notfound [R,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule !\.(js|ico|gif|jpg|png|bmp|swf|css|html)$ index.php [QSA,L] </IfModule> URLからのアクセスは、 http://localhost/test/public/index.php/index/index と入力するとちゃんとindexコントローラのページが表示できます(http://localhost/test/public/index.phpでもアクセスできます) ですが自分としては、 http://localhost/test/public/index/index とindex.phpを抜かしてアクセスさせたいのですが、 この.htaccessファイルのままでは、 「404 Not Found 該当するページが見つかりません。 ページは削除されたか、移動された可能性があります。 」 のページになってしまいます・・・ なにを記述すればindex.phpなしでアクセスできるようになるのでしょうか? Sabel ドキュメントとか(非公式) http://ebine.org/sabel/doc/index.html

    • 締切済み
    • 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について

    RewriteRuleについて教えてください。 いままでhtmlだったのをphpに直しました。 通常であれば、 RewriteRule ^(.*)\.html$ /$1\.php [L,R=permanent] と書けば、自動的に***.html → ***.phpに変更になります。 これで問題はないのですが、 ディレクトによっては、すべてphp化していません。 特定のディレクトリ(hoge)にアクセスした場合のみ拡張子をphpに変更したい場合の書き方をお教えください。 以下では動きませんでした。 RewriteRule ^/hoge/(.*)\.html$ /$1\.php [L,R=permanent]

    • ベストアンサー
    • CGI
  • htaccessのRewriteRuleの正規表現

    htaccessファイルのRewriteRuleの記載方法で悩んでいます。 実現したい事は以下の2つの動作ですが、(1)は出来たのですが、(2)で困っています。 なお、{user_name}は"?"を除く半角英数文字と-_で構成されています。 (1)Twitterのようにドメイン名以後にユーザ名がある場合はindex.phpにGETのuserでuser_nameを渡す http://hogehoge.com/{user_name}  ↓ http://hogehoge.com/index.php?user={user_name} (2)ユーザ名表示の際にオプションがある場合("?"以後)は、そのまま変換先URLの最後尾に記述する http://hogehoge.com/{user_name}?option1=ok  ↓ http://hogehoge.com/index.php?user={user_name}&optione1=ok 現状以下のようにhtaccessを考えましたが結果NGでした。 RewriteEngine on RewriteRule (.+)[?](.+)$ index.php?mode=user&screen_name=$1&$2 [L] RewriteRule (.+)$ index.php?mode=user&screen_name=$1 [L] よろしくお願いいたします。

    • ベストアンサー
    • HTML