• ベストアンサー

RewriteRuleについて教えてください

RewriteEngine On RewriteBase / RewriteRule ^num([0-9]+)/$ number.html?inp=$1 [L] に設定したら、cssやイメージが適用されないです。 ご教授お願いします。

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

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

相対URL指定をしているのでは?<img src="a.jpg">とか? num1/ と number.html?inp=1 とではディレクトリ階層が違いますよ。 上記imgタグなら、ブラウザは当然 num1/a.jpg を見に行きますが、そこに画像が無いのでは? 相対パスを使うなら、例えば RewriteRule ^num([0-9]+)$ number.html?inp=$1 [L] のようにしないと。 あるいは、画像やcssのパスもリライトするか。number.htmlと同じ階層にあるとすると、 RewriteRule ^num([0-9]+)/$ number.html?inp=$1 [L] RewriteRule ^num[0-9]+/(.*\.(jpg|gif|png|css))$ $1 [L]

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

関連するQ&A

  • RewriteRuleについて教えてください

    RewriteEngine On RewriteBase / RewriteRule ^num([0-9]+)/$ http://aaaa.jp/number.html?inp=$1 [L] 上記にように、.htaccessに設定しましたが、 ブラウザのアドレスバーに、http://aaaa.jp/number.html?inp=1のように、表示されますが、 アドレスバーにもhttp://aaaa.jp/num1のように表示したいですが、どうすれば良いですか?

    • ベストアンサー
    • HTML
  • Apache2.0.54にてRewriteRule内に/が含まれるパスが認識されない

    お世話になります。 TOCMAT5.0.3/Apache2.0.54 の環境にて 特定ページへのアクセスが来た際にsslにてアクセスを行いたく 以下のような設定を行いました。 .htaccessにて --------- RewriteEngine on RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^test/test.html$ https://%{SERVER_NAME}/secure.html [R,L] RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^test.html$ https://%{SERVER_NAME}/secure.html [R,L] --------- test.htmlでアクセスすると正常にリダイレクトが行われるのですが RewriteRule内に「/」が含まれているものはうまく動作しません。。 以下のようなパスに変更などして試しているのですがうまくいきません。 ^test\/test.html$ ^test//test.html$ ^test/*$ 他のサーバーにて、同様のRewriteRuleは正常に動作しますので、 mod_jk.conf httpd.conf の設定に不備があるように考えていますが検討が付きません。 ご教授よろしくお願い致します。

  • RewriteRule の使い方がわかりません(>_<)

    ~.com/abc/ の (1) RewriteEngine On RewriteRule ^(a).html?$ $1.cgi [L,T=application/x-httpd-cgi] としたところ /。。。/a.cgi (内部でのパス) ・Not Foundとか、 ・You don't have permission toだとか  エラーがでるのですが (2) RewriteRule ^(b).html?$ /abc/a.cgi とかだと きちんと表示されます (1) をきちんと 設定したいのですが どうやって設定するのですか? もしかして  書き換えたアドレスは ドメインからの urlとして 記述しないといけないのですか?

  • プログラムのクエリーを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
  • RewriteCondとRewriteRuleについて

    どのジャンルか迷いましたが、ここでお願いします。 ローカル環境で、トップにbbbディレクトリがあります。 bbbディレクトリの中は .htaccess index.html cccディレクトリ があり、 cccディレクトリの中は a.htmlがあります。 ¥┬index.html   └bbb┬index.html .htaccess      └ccc─a.html ここでhttp://localhost/bbb/a.htmlにアクセスすると cccディレクトリの中のa.htmlを参照するようにさせたいと思い、 .htaccessに RewriteEngine on RewriteCond $1 !^(b.html) RewriteRule ^(.*)$ ccc/$1 [L] や又は RewriteEngine on RewriteCond $1 ^(?!b.html)(.+) RewriteRule ^(.*)$ ccc/$1 [L] と書いたのですが Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. というエラーが出てしまいます・・・ RewriteEngine on RewriteCond $1 ^(a.html) RewriteRule ^(.*)$ ccc/$1 [L] と書けばちゃんと表示されるのですが、否定を用いた書き方(RewriteCond $1 !^(b.html)) だと、どこが間違っているのでしょうか?

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

  • Zend Frameworkの.htaccessが分からない

    ので教えてください。 .htaccess: SetEnv APPLICATION_ENV development RewriteEngine On RewriteBase /zend23/kubo/public RewriteCond %{REQUEST_FILENAME} -s [OR] #(1) RewriteCond %{REQUEST_FILENAME} -l [OR] #(2) RewriteCond %{REQUEST_FILENAME} -d #(3) RewriteRule ^.*$ - [NC,L] #(4) RewriteRule ^.*$ index.php [NC,L] #(5) において (1),(2),(3)はどういう意味でしょうか? また (4),(5)においてRewriteRuleは(5)だけだとまずいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • .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
  • 301リダイレクトの例外処理

    WEBサイト全体に 拡張子がhtmとhtmlが混在していて管理がわずらわしいので、 .htaccessで下記のような設定をしました。 ドメイン直下に.htaccessを置いているので、サイト全体でこの設定が有効に なっているのですが、あるフォルダだけこれが適用されないように 設定をしたいと思います。 いろいろやってみたのですが、今ひとつ正常に動いてくれません。 どのようにすればいいのでしょうか。 -------------------------------------------------------------- Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^XXX.jp RewriteRule ^(.*)$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://www.XXX.jp/$1 [R=301,L] Options +FollowSymLinks RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.htm RewriteRule ^(.*)index.htm$ http://www.XXX.jp/$1 [R=301,L] -------------------------------------------------------------- サーバーはApache/1.3.42 .htaccessファイルを置いているのは、ドメイン直下です。

  • 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]

このQ&Aのポイント
  • 家族が自らの身体を犠牲にして働く理由は何なのか?
  • 何度もけがをし、命まで危険にさらす家族の姿に疑問を感じる
  • 一体、彼らの努力の先には何が待っているのかについて考えてみる
回答を見る