• 締切済み

mod_rewite .htaccessの書き方

現在.htaccessに RewriteEngine On RewriteRule ^(.+).html+ aaa.cgi?sss=$1 の記述をして http://search/abc.htmhttp://search/aaa.cgi?sss=(.+) という具合によみかえています。 ※search/のディレクトリに該当のCGIと.htaccessを置いています。 http://search///////////////abc.htm のようにsearchとabcの間に不特定数(1個以上)の/をつけてリクエストされた場合にも、 http://search/abc.htm のリクエストと同じように、 http://search/aaa.cgi?sss=(.+) とよみかえるには、.htaccessにどのような記述を付け加えるとよろしいでしょうか? 何卒よろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

RewriteRule ^(.+).html+ aaa.cgi?sss=$1 は RewriteRule ^(.+).html? aaa.cgi?sss=$1 の間違いではないですか? //// を無視するなら、 RewriteRule ^/*(.+).html? aaa.cgi?sss=$1 でいいと思います。

http777
質問者

お礼

有難うございます。試してみます。

関連するQ&A

  • htaccessの上書き方法について

    昨日の質問の続きなのですが、 (昨日の質問:http://okwave.jp/qa/q8026821.html) 上記の質問で解決方法はわかったのですが、 私がCGIの触り方がわからないので、 自分なりに別の方法を探しました。 しかしうまくいかなかったので、また質問させてください。 ■質問 htaccessで「index.html」なしに設定したところ、 CGIがエラーを返すようなったので、 TOPディレクトリのhtaccess設定はそのままで、 CGIを使うページをまとめたディレクトリには 新たにhtaccessでindex.htmlありに、上書きできないかと考えました。 しかし結果はエラーでした。 どうにかして、特定のディレクトリにのみ、別のhtaccessを使って トップディレクトリに設置したhtaccessの設定を上書きする方法はないでしょうか。 ちなみに失敗した結果は下記の記述になります。 ▼成功したが、CGIページでエラーが出た記述 # URLの正規化(index.html無し) Options FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://scinex-fw.co.jp/$1 [R=301,L] ▼下層ページで上書きできなかった記述 # URLの正規化(index.html有り) RewriteEngine on RewriteRule ^$ /index.html [R=301]

    • ベストアンサー
    • CGI
  • リダイレクトのhtaccessを置くと403エラー

    perlで書いたCGIファイルがあるのですが、スマホ用のリダイレクトhtaccessファイルをトップディレクトリに置いた所、CGIのページが403エラーになってしまいました。 .htaccessファイルを外すと正常に表示するので、原因は.htaccessなのですが、理由が思い当たりません。 CGIのソースは出せないですが、お問い合せフォーム用のCGIです。 何かお気づきの点がありましたら助言お願い致します。 ● .htaccess(トップディレクトリに設置) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPhone|Android.*Mobile|Windows.*Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / </IfModule> ● ディレクトリ構造 /index.html・・・トップページ /.htaccess・・・上記内容 /contact/all/index.cgi・・・403エラーになるCGI /contact/all/.htaccess・・・「Options ExecCGI」のみ記述 /sp/・・・スマホ用のリダイレクト先ディレクトリ(以下略)

  • htaccessのマッチが失敗します

    下記のように書いていますがうまく動作しません。 どのように手直しすればうまくいきますでしょうか??? hostname/abc_abc_ab_abc.html というテストを作ってみたのですが、本来であれば、abc3.cgiへ渡されるはずなのですが、全て、all.cgiへ渡されてしまいます。 お分かりになる方、宜しくお願い致します。 RewriteEngine on RewriteBase / ##リクエストURI中に、abcという文字列が3回以上ならabc3.cgiを動作させる RewriteCond %{Request_URI} "^(abc){3,}$" [NC] RewriteRule ^(.+)$ abc3.cgi?$1 [L] ##リクエストURI中に、abcという文字列が1から2回ならabc12.cgiを動作させる RewriteCond %{Request_URI} "^(abc){1,2}$" [NC] RewriteRule ^(.+)$ abc12.cgi?$1 [L] #どれにもマッチしない場合、all.cgiを動作させる。 RewriteRule ^(.+)$ all.cgi?$1 [L]

    • ベストアンサー
    • Perl
  • 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の設定について

    .htaccessについての質問です。 今までメインディレクトリ内に index.html aaa.html の2つがあるとします。 今回、新たにサブディレクトリを作って(sp/) その中に index.html をスマホ用閲覧の為に新たに作りました。 メインディレクトリ内に.htaccessを設置して スマートフォンからindex.htmlにアクセスすると自動で/sp/index.htmlに リダイレクトすることができました。 ただしサブディレクトリ内の sp/index.htmlの中にあるリンク(リンク先はメインディレクトリのaaa.html) にリンクすると/sp/aaa.htmlに切り替わってしまい、当然そのようなページがないので 「ファイルが見つかりません」と表示されてしまいます。 サブディレクトリーからメインディレクトリーにリンクさせる場合、/sp/を付加させないためにはどのように設定したらいいのか教えてくだい。 よろしくお願いいたします。 なお、今のメインディレクトリのhtaccessの記述は DirectoryIndex frontpage.php headpage.shtml index.html RewriteEngine on RewriteCond %{REQUEST_URI} !/sp/ RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android|Windows\ Phone) RewriteRule ^(.*)$ sp/$1 [R] RewriteBase / RewriteCond %{REQUEST_URI} /sp/ RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android|Windows\ Phone) RewriteRule ^sp/(.*)$ $1 [R] RewriteBase / です。 よろしくお願いいたします。

  • htaccess mod_rewriteのドット

    ワードプレスをインストールし.htaccessをのぞいてみると以下のようにあります。 RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 一番下のRewriteRuleは%{REQUEST_FILENAME}がルートディレクトリ直下にあるファイルやディレクトリでなければ、RewriteRule . /index.php [L]を実行するという理解でいいでしょうか? それとRewriteRule . /index.php [L]のドットはどういう意味でしょうか? ドットは一文字ということだとおもいますが、では、mysite.co.jp/kはmysite.co.jp/indx.phpに修正される?ということでしょうか?現状では、mysite.co,jp以下に適当な文字列を入力してmysite.co.jp/dgfdhgfghfdhなどとしてもそのURLのままサイトが表示されてしまいます。記事の部分は404NotFoundなのですが。。 情報はあるのですが、調べても混乱してしまうのでご存知でしたらよろしくお願いいたします。 Apache wordpress

    • 締切済み
    • PHP
  • htaccess リダイレクトの記述方法

    「wwwなし http://www.abc.net/」から 「wwwありに統一 sslありのhttps://www.abc.net/」にリダイレクトしたいのですが、以下の記述で合っていますでしょうか。よろしくお願いします。 Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^abc.net RewriteRule ^(.*)$ http://www.abc.net/$1 [R=301,L] RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    • ベストアンサー
    • HTML
  • mod_rewrite設定について

    タイトル通りPHPではなく、mod_rewriteについての質問になります。 適切なカテゴリが見当たらなかったので、PHPカテゴリであれば適切な回答を頂けると考えてこちらに書かせていただきます。 一応、.htaccess内にmod_rewriteの記述をして動作させる事はできていますが、理解が浅く応用が効かないレベルです。 ちょっと、今回その応用が必要になって、ハマッてしまいました。 仮に現在、以下のようなユーザディレクトリ形式のレンタルサーバで動作しているサイトがあるとします。 ttp://example.com/hoge/ RewriteEngine On RewriteBase /hoge/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /hoge/blog/index.php [L] この例では、.htaccessを【ttp://example.com/hoge/】に置いて、その下の階層に置かれたblogディレクトリのindex.phpにリダイレクトさせるという事ですが。 今回該当サイトのサーバを移動する事になって、ユーザディレクトリ形式ではなく、サブドメイン式の以下のようなレンタルサーバへ移動する事になりました。 ttp://hoge.example2.com/ もちろん、.htaccessの内容も書き換えて、以下のようにちゃんと変更して動作させる事ができています。 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] .htaccessを基準として見れば、自分(.htaccess)よりも下のblogディレクトリにアクセスするのは変わりないので、相対記述さえできれば…と試してみたところ、動きませんでしたorz。 どの階層に置かれても100%動く!!.htaccessが置かれたディレクトリをリネームされても大丈夫!! という記述方法があればベストなんですが。 ※特殊な環境では無理だが、一般的環境では8割方動くだろうという事でも可 そんな記述方法がないにしても理解が浅いために、「たぶん無理だろう」という予感を持っているだけで「このような理由で技術的に無理です」と言えないところに問題が。 ※ワードプレスのような広く使われているシステムが、ディレクトリ移動の際には書き換えの必要があるため。方法があるなら、きっとその方法は既に導入されているはずという予感から。 よろしければ、ご教授ください。

    • 締切済み
    • PHP
  • 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でhttp⇒https topのみ

    htaccessを使って、homeのみhttp⇒httpsにしたいのですが、ご存知の方いますか。 (例) http://www.abc.com ⇒ https://www.abc.com 下記のような他のページは転送を行う必要はありません。 不要(http://www.abc.com/dfg.html ⇒ https://www.abc.com/dfg.html) 下記に記載したものは、すべて転送されてしまいます。 RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*)?$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

専門家に質問してみよう