- ベストアンサー
.htaccessでURLの内容を変更する方法
- URLをそのまま保ちつつ、指定のディレクトリ以下のファイルを表示するための.htaccessの書き方について説明します。
- いくつかの試みをしたもののうまく動作しない場合、設定に問題がある可能性があります。以下の方法を試してみてください。
- RewriteRuleを使用して指定のディレクトリ以下のファイルを表示するようにリダイレクトする方法について説明します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> RewriteRule ^([^img^css].*)/(.*)$ /main/$1/$2 では無く RewriteBase / RewriteRule ^main/.* - [L] RewriteRule ^img/.* - [L] RewriteRule ^css/.* - [L] RewriteRule ^(.*)/(.*)$ /main/$1/$2 とした方が見やすく、何がしたいのか判断しやすい設定だと思います。 > http://www.example.com/main/abc/ の場合 > URLは http://www.example.com/abc/ になり、内容は/main/abc/を表示することって可能でしょうか? RewriteRuleが無限ループになってしまうので難しいでしょう。 もしやりたいのであれば、Aliasとmod_rewriteの組み合わせで処理させるのが良いのではないでしょうか。
その他の回答 (3)
- t_ohta
- ベストアンサー率38% (5238/13705)
> ただ、 > http://www.example.com/aaa.html > などは、そのまま表示したいのですが、可能でしょうか? 私の環境では、ルートディレクトリにあるHTMLファイルはそのまま表示できていますよ。
お礼
ありがとうございます。 http://www.example.com/img/~とhttp://www.example.com/css/~を読み込んでいないだけで、以下にすると表示できました。 RewriteBase / RewriteRule ^main/.* - [L] RewriteRule ^([^img^css].*)/(.*)$ /main/$1/$2 ちなみにですが、上記をした上で、 http://www.example.com/main/abc/ の場合 URLは http://www.example.com/abc/ になり、内容は/main/abc/を表示することって可能でしょうか?
- t_ohta
- ベストアンサー率38% (5238/13705)
これでどうでしょうか RewriteBase / RewriteRule ^main/.* - [L] RewriteRule ^(.*)/(.*)$ /main/$1/$2
お礼
ありがとうございます! できました! ただ、 http://www.example.com/aaa.html などは、そのまま表示したいのですが、可能でしょうか?
- 春原 なの(@ymda)
- ベストアンサー率37% (668/1777)
これだけでは動きません。 コピペで申し訳ありませんが・・・これを参考にしてみてください。 RewriteCond %{REQUEST_URI} !^/(attach|cache|image|skin) RewriteRule ^\?(.*)$ /index.cgi?$1 [L] RewriteCond %{REQUEST_URI} !^/(attach|cache|image|skin) RewriteRule ^(.+)/$ /index.cgi/$1 [L] RewriteCond %{REQUEST_URI} !^/(attach|cache|image|skin) RewriteRule ^$ /index.cgi [L] ---- 似たもの・・・ RewriteCond %{REQUEST_URI} !^(attach|cache|image|skin) RewriteRule ^\?(.*)$ /cgi-bin/w?$1 RewriteCond %{REQUEST_URI} !^(attach|cache|image|skin) RewriteRule ^(.+)/$ /cgi-bin/w/$1 RewriteCond %{REQUEST_URI} !^(attach|cache|image|skin) RewriteRule ^$ /cgi-bin/w ---- 別のもの ちょっと古いものですが・・・ RewriteCond %{HTTP_USER_AGENT} ^UP\.Browser [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} ^Pixo-Browser [OR] RewriteCond %{HTTP_USER_AGENT} ^Semulator [OR] RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} voda [OR] RewriteCond %{HTTP_USER_AGENT} Voda RewriteRule ^(.*)\.html$ /cgi-bin/view.cgi?$1.html [T=application/x-httpd-cgi] RewriteCond %{HTTP_USER_AGENT} ^UP\.Browser [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} ^Pixo-Browser [OR] RewriteCond %{HTTP_USER_AGENT} ^Semulator [OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} voda [OR] RewriteCond %{HTTP_USER_AGENT} Voda RewriteRule ^$ /cgi-bin/view.cgi?index.html [T=application/x-httpd-cgi] RewriteCond %{HTTP_USER_AGENT} ASTEL [OR] RewriteCond %{HTTP_USER_AGENT} PDXGW [OR] RewriteCond %{HTTP_USER_AGENT} DreamPass [OR] RewriteCond %{HTTP_USER_AGENT} AVE-Front [OR] RewriteCond %{HTTP_USER_AGENT} WebTV [OR] RewriteCond %{HTTP_USER_AGENT} L-mode RewriteRule ^(.*)\.html$ /block/no.htm [L] #RewriteCond %{HTTP_USER_AGENT} Googlebot [OR] RewriteCond %{HTTP_USER_AGENT} Lycos_Spider [OR] RewriteCond %{HTTP_USER_AGENT} inktomi [OR] RewriteCond %{HTTP_USER_AGENT} moget [OR] RewriteCond %{HTTP_USER_AGENT} Infoseek [OR] RewriteCond %{HTTP_USER_AGENT} Architext [OR] RewriteCond %{HTTP_USER_AGENT} DiaGem [OR] RewriteCond %{HTTP_USER_AGENT} MSIECrawler [OR] RewriteCond %{HTTP_USER_AGENT} wget [OR] RewriteCond %{HTTP_USER_AGENT} PerManSurfer [OR] RewriteCond %{HTTP_USER_AGENT} Pockey-GetHTML [OR] RewriteCond %{HTTP_USER_AGENT} ^Java [OR] RewriteCond %{HTTP_USER_AGENT} WebAuto RewriteRule ^(.*)\.html$ /block/robot.htm [L] RewriteCond %{HTTP_USER_AGENT} BrowserCrasher RewriteRule ^(.*)\.html$ /block/bc.htm [L] RewriteCond %{HTTP_REFERER} ime\.st [OR] RewriteCond %{HTTP_REFERER} ime\.to [OR] RewriteCond %{HTTP_REFERER} ime\.nu [OR] RewriteCond %{HTTP_REFERER} 2ch\.net RewriteRule ^(.*)\.html$ /block/index-2ch.htm RewriteCond %{HTTP_REFERER} jbbs.shitaraba RewriteRule ^(.*)\.html$ /block/index-shitaraba.htm
お礼
ありがとうございます。 mod_rewriteでは無理ですかね。 もう少しいろいろ試してみようとおもいます。 この度は、丁寧に教えていただいてありがとうございました。