• 締切済み

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/配下に置いてあります。 どなたかご存知の方はいらっしゃいますでしょうか。 上記の設定内容だけだと情報が足りないなどございましたら、おっしゃってください。 宜しくお願い致します。

みんなの回答

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

.htaccess を、http://ローカルIP/free/ 配下に置いているのであれば、 書き換えルールは RewriteEngine On RewriteBase /free RewriteRule ^([0-9,a-z,A-Z]+)$ index.php?action=$1 となります。

Web2008
質問者

お礼

ご回答ありがとうございました。 教えて頂きました設定をしたら、.htaccessで制御することができました。 どうもありがとうございました。

関連するQ&A

  • mod rewriteの適用範囲

    どなたか分かったら教えてください。 mod rewriteを使おうと思い、httpd.confに以下のような 記述をしたのですが、これでhtdocs内はmod_rewirteが適用されたのですが、その下のディレクトリでは適用されません。 (Object not found!) /htdocsの下のディレクトリ全部に適用されるようにする方法はありますでしょうか? <Directory /home/htdocs> Options Indexes FollowSymLinks Includes MultiViews ExecCGI AllowOverride All Order allow,deny Allow from all RewriteEngine On RewriteRule ^id-([0-9]+).html+ log.cgi?id=$1 </Directory>

  • Apache mod_rewriteが .htaccess ではうまく適用できない

    mod_rewriteで書き換えに挑戦しているのですが、うまく動いてくれません。 やりたいことは、 http://www.example.com/ 以下をすべて http://www.example.com/index.php に書き換えたい。 開発中は直接 httpd.conf を編集できるため RewriteEngine on RewriteRule ^/((?!css|js|img).*)$ /index.php?&%{QUERY_STRING} [L] 上記で問題なく動いているのですが、htaccessではinternal errorかACCESS forbidden, object notfound などでうまく以後来ません。 ためしに、 RewriteRule aaa index.php?&%{QUERY_STRING} [L] として、http://www.example.com/aaa にアクセスしても object notfound が返ってきます。 ^aaa としたり ^aaa$ としたり、いろいろ試してるのですが全滅・・・ 検索して見つかったサンプルなどをそのままコピーしても使えません。 ちなみに、開発環境では Apache2.2.4。 公開用では 1.3系 の予定です。 Apache2.2.4 の httpd.conf ではOK。htaccess ではOUT。 難しい・・・

  • 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 によって指定IPのアクセス制限をしたい

    以下の環境・設定で求める制限ができません。設定不備等ご指導いただければと思います。宜しくお願いいたします。 ●環境: ApacheV2.2.0・FeroraCore6・社内運用(否インターネット) documentroot からのシンボリックリンク先で制限したい ●設定: (1)アクセスを制限したいディレクトリと同階層に「.htaccess」を作成(192.168.12.xxからのアクセスを制限・以下内容) order allow,deny deny from all allow from 192.168.12 (2)httpd.conf の以下を編集 #<Directory /> # Options FollowSymLinks # AllowOverride None #</Directory> <Directory /> Options All AllowOverride All </Directory> (3)httpd再起動

  • [Apache] サブディレクトリに.htaccessをおいた場合

    Apacheの.htaccessについての質問です。 webにて可能な限り検索してみたのですが、該当する記事がありませんでした。 よろしくお願いします。 【環境】  ・windows xp sp2  ・xampp(apache 2) 【httpd.confの設定】 DocumentRoot "J:\foo" <Directory "J:\foo"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> ※)Jドライブは外付けHDDです。 【現象】 1.DocumentRootの「J:\foo」に.htaccessを設置した場合   1)http://localhost/でアクセス     →機能します   2)http://localhost/ver/でアクセス     →機能します   ※)DocumentRootに.htaccessを設置した場合、通常の動作になる。     (サブディレクトリにもDocumentRootに設置した.htaccessの設定が有効になる) 2.「J:\foo\ver」に.htaccessを設置した場合(DocumentRootの.htaccessは除去)   1)http://localhost/ver/でアクセス     →機能しません 「2」を機能させたいのですが、どのような設定が必要なのでしょうか。 尚、念の為.htaccessの内容を以下に記します。 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.html [L,QSA] この.htaccessについてはレンタルサーバ上で動作確認済みである為、おそらくはhttpd.confの設定かと考えています。 または外部HDDにDocumentRootを設定しているのが問題かと・・・。 説明不足な点がございましたらご指摘頂けると幸いです。 以上、どうぞよろしくお願い致します。

  • mod_rewriteで$_GETが受け取れない

    mod_rewriteで$_GETが受け取れない現象の原因が分からず、困っています。 前の質問は、内容に間違いがあったため、削除して書き直します。 公開サーバはVineLinux3.2でApache2を動かしています。 ドキュメントルートに以下の内容の.htaccessを配置しています。 RewriteEngine on RewriteRule ^index/([a-z0-9A-Z_]*)?$ index.php?action=$1 RewriteRule ^index/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)/([a-z0-9A-Z_]+)$ index.php?action=$1&type=$2&value=$3 ところが、 index/hogehogeにアクセスしても、 index.phpの結果しか返ってきません。 index.phpでvar_dump($_GET);を実行した結果は、 array(0) {}となります。 WindowXP + XAMPP1.6.6a で構築したローカル環境では期待通り、 index/hogehogeにアクセスすることでindex.php?action=hogehogeの結果が返ってきます。 どこに原因があるのか全く分からず、困っております。 宜しくお願いします。

  • httpd.confを添削してください!!(長文)

    こんにちわ いろいろと調べながらhttpd.confを自分の理想の動作を得るたねに設定したつもりです。 添削をお願いします。 /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ DocumentRoot /var/www/html <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "/var/www/html"> #←home Options FollowSymLinks Includes AllowOverride All Order allow,deny Allow from all </Directory> #.htaccessを許可、cgiは不可、ssiは許可、シンボリックリンク許可 Order~略 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride AuthConfig Limit Options +ExecCGI +Includes </Directory> #ユーザー領域では.htaccessで認証、アクセス元などで制御の許可。 それ以外は不可。 homeでcgiが不可ですがここでは許可したいので+を付けた。 <Directory "/var/www/cgi-bin"> AllowOverride All Options ExecCGI Order allow,deny Allow from all AddHandler image .gif .jpg AddHandler text/html .htm .html </Directory> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ こんな感じなんですがどこかおかしいでしょうか?

  • httpd.confと.htaccessについて

    http://www.○○.jp/ とファイル名を指定せずにURLを打ち込んだ時にindex.htmlではなくindex.phpを 見に行くようにしたいので、 apacheのhttpd.confを設定したんですが、うまく.htaccessファイルを見に行ってくれません。 一応、下記のとおりAllowOverrideをAllにして、.htaccessを使用可能な状態にしたハズなのですが 何か足りない部分があるんでしょうか? ************************************* <Directory /> Options FollowSymLinks AllowOverride All </Directory> AccessFileName .htaccess ************************************* ちなみに.htaccessが使用可能でなくても、最初にindex.phpを見に行ってくれればOKなので 下記のようにhttpd.confに設定をしたのですが、やっぱりダメで 無条件でindex.htmlを見に行ってしまいます。 DirectoryIndex index.php index.html index.htm index.shtml index.cgi 何分、初心者なのでつまらない質問かもしれませんが 色々試みたんですが、お手上げ状態です。。 どなたかわかる方いらっしゃったらよろしくお願いいたします。

  • .htaccessの利用

    現在、アイル社でレンタルサーバーを利用しています。 .htaccessの設定をしてもパスワードによる認証制限ができなかったので、問い合わせたところ、下記の回答が戻ってきました。 =====ここから====================== ClassCat Cuteのデフォルトでは.htaccessが利用できないようになっていますが、各仮想サイトの設定ファイルに"AllowOverride All"と記述することで利用可能になります。 各仮想サイトの設定は下記ディレクトリーにあります。 /etc/httpd/conf/vhosts/ ■仮想サイト1で.htaccessを利用したい場合の例 1. viで仮想サイトの設定ファイルを開きます。 vi /etc/httpd/conf/vhosts/site1 2. 『AllowOverride All』の既述を追加します。 -------変更前(例)------- Options FollowSymLinks Includes ExecCGI Options FollowSymLinks Includes ExecCGI -------------------------- -------変更後(例)------- Options FollowSymLinks Includes ExecCGI AllowOverride All Options FollowSymLinks Includes ExecCGI AllowOverride All -------------------------- 3. 設定変更後、webサービスの再起動を行います。 /etc/rc.d/init.d/httpd restart ※コマンド操作についてはサポートしておりませんので、参考書籍や情報サイト等にてご確認ください。 =====ここまで====================== まったく意味がわかりません。 viとは何ですか? 何をどうしたらよいのか…。 上記の内容がわからない旨も問い合わせましたが、返事がありませんので、ご質問させて頂きます。 オフィスのPCはWindowsです。 どのような操作をする事で、htaccessを利用する事ができるでしょうか? できるだけ詳しく教えて下さい。

  • 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