.htaccessでwww無しとindex.html無しのURLに統一する記述は?  【解決済み】

質問全般・改善要望
返信する
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

.htaccessでwww無しとindex.html無しのURLに統一する記述は?

投稿記事 by nakahi »

-----
ご利用のサーバ:
MODXのバージョン:1.0.6J-r8
PHPのバージョン:5.33
MySQLのバージョン:5.0.95
ブラウザ:FF16.02
-----
いつもお世話になっています。
最近多くて申し訳ございません。

新しいバージョンをアップデートする時は、以前から使っている.htaccessをそのまま使用できるので問題ないのですが、新規でインストールするにはhtaccess.tplを土台にして作成しなくていけませんが、以前から比べるとあまりにも中味が少なくて、どのように編集すれば良いのか戸惑っています。

www無しとindex.html無しのURLに統一したいのですが、ググっても記述の違いが結構あって正解が分からないのですがご教授頂けませんでしょうか?

www無しのURLに統一する記述では、

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteRule (.*) http://example.com/$1 [R=301,L]


RewriteEngine on
RewriteCond %{HTTP_HOST} ^(http://www.example.com)(:80)? [NC]
RewriteRule ^(.*) http://example.com/$1 [R=301,L]
((:80)?が付く)

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example\.com
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
(Options FollowSymLinksが付く)

の違いがあり、あるサイトのMODxでは

# Rewrite domain.com -> http://www.domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]

となっていましたが、RewriteCond %{HTTP_HOST} !^example\.com [NC]の部分は、!^www.example\.com [NC]とwwwは入れなくて良いのでしょうか?ずっとwwwを入れたまま使っていましたけど・・・・・


次にindex.html無しのURLに統一する場合ですが、

Options FollowSymLinks
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]


Options +FollowSymLinks
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]
(+がついている)

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]
(Options FollowSymLinksがない)

の違いがあります。

それで以前の.htaccessは(いま使用中)
# For full documentation and other suggested options, please see
# http://svn.modxcms.com/docs/display/MODx096/Friendly+URL+Solutions
# including for unexpected logouts in multi-server/cloud environments
# and especially for the first three commented out rules
#php_flag register_globals Off
#AddDefaultCharset utf-8
#php_value date.timezone Asia/Tokyo
# Options +FollowSymlinks
RewriteEngine On
RewriteBase /
# Fix Apache internal dummy connections from breaking [(site_url)] cache
RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]
# Rewrite domain.com -> http://www.domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www.example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
# Exclude /assets and /manager directories and images from rewrite rules
RewriteRule ^(manager|assets)/*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
# For Friendly URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
# Reduce server overhead by enabling output compression if supported.
#php_flag zlib.output_compression On
#php_value zlib.output_compression_level 5
# For UTF-8
# php_flag output_buffering Off
# php_value output_handler none
# php_value default_charset UTF-8
# php_value mbstring.language japanese
# php_flag mbstring.encoding_translation On
# php_value mbstring.http_input auto
# php_value mbstring.http_output UTF-8
# php_value mbstring.internal_encoding UTF-8
# php_value mbstring.substitute_character none
# For EUC-JP
# php_flag output_buffering Off
# php_value output_handler none
# php_value default_charset EUC-JP
# php_value mbstring.language japanese
# php_flag mbstring.encoding_translation On
# php_value mbstring.http_input auto
# php_value mbstring.http_output EUC-JP
# php_value mbstring.internal_encoding EUC-JP

となっていましたが、# Reduce server overhead by enabling output compression if supported.以下の部分は恐らく不要だと思います。

それで最終的にwww無しとindex.html無しのURLに統一する場合はhtaccess.tplの編集は下記のようで良いのでしょうか


# http://modx.jp/docs/admin/htaccess.html

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
# MODXをサブディレクトリにインストールしている場合は「/modx」などに。

# Rewrite domain.com -> http://www.domain.com -- used with SEO Strict URLs plugin
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]

分かっている方から見れば適宜編集すればすぐできるのでしょうが、私なんかは数時間もこれに取り組んで難儀しています。出来れば、こうしたければ、ここだけ変更すれば良いですよ、みたいな長いテンプレートを添付して頂けると有難いのですが・・・・・

勝手な願望で申し訳ありません。
結論までが長いのですが、最後の.htaccessの記述が適性かどうか判断をお願い致します。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: .htaccessでwww無しとindex.html無しのURLに統一する記述は?

投稿記事 by yama »

http://www.htaccesseditor.com/
上記サービスを使うと便利と思います。

http://www.google.com/search?q=htaccess ... lr=lang_ja
上記で1~2ページ確認するとより確実かも?

.htaccessは以前はたくさん書いていたのですが、MODXのシステムに関する肝心の記述が埋もれてしまうのがノウハウ上よくないと思うので現在はシンプルにまとめてます。古くなる情報もありますし。ベテランユーザにしか必要ない情報もあると思います。

http://modx.jp/docs/admin/htaccess.html
上記のページ、実は間違ってる箇所があります orz
あとで訂正します

分からない部分があれば、また繰り返し質問いただければと思います
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

Re: .htaccessでwww無しとindex.html無しのURLに統一する記述は?

投稿記事 by nakahi »

早々のご返信有難うございます。ビックリしました!
yama さんが書きました: http://www.htaccesseditor.com/
上記サービスを使うと便利と思います。
有難うございます。
知っていて、使ったら余計に混乱しました。ここで作成すると、
RewriteCond %{HTTP_HOST} ^(www\.example\.com)(:80)? [NC]
となって、他の情報とかなり違うのです。wwwがついたり、(:80)?がついたり・・・・・
それと、index.html無しのURLに統一が出来ないんです。
yama さんが書きました: http://www.google.com/search?q=htaccess ... lr=lang_ja
上記で1~2ページ確認するとより確実かも?
似たようなページでググったのですが、RewriteCond %{HTTP_HOST}の部分にwwwがついているのと、付いていないのがあったりして余計に混乱してます。
yama さんが書きました: http://modx.jp/docs/admin/htaccess.html
上記のページ、実は間違ってる箇所があります orz
あとで訂正します
有難うございます。
訂正された情報をもとにもう一度.htaccessを書き直してアップしますので、添削して頂ければ有難く存じます。
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

Re: .htaccessでwww無しとindex.html無しのURLに統一する記述は?

投稿記事 by nakahi »

お世話になっています。

試行錯誤の結果、現行バージョン同封のhtaccess.tplに追加して、下記のような.htaccessにするつもりですが、サラッと見て頂いてこれで良いのか可怪しいのか、添削して頂ければ有難いのですが・・・・・
何卒宜しくお願い致します。

# http://modx.jp/docs/admin/htaccess.html

# Options +FollowSymlinks
RewriteEngine On
RewriteBase /
# MODXをサブディレクトリにインストールしている場合は「/modx」などに。

RewriteRule ^(manager|assets)/.*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteRule ^(.*) http://example.com/$1 [R=301,L]

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L]
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: .htaccessでwww無しとindex.html無しのURLに統一する記述は?

投稿記事 by yama »

RewriteEngine Onの記述は最初の一度だけでよいと思います。他、MODXとしては特に問題なさそうです。
wwwの有無は実際に試してうまくいかなければ先に記述するとよいかも?
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

Re: .htaccessでwww無しとindex.html無しのURLに統一する記述は?  【解決済み】

投稿記事 by nakahi »

はい!わかりました!

yamaさん、いつもながら有難うございました。
添削までお願いして申し訳ございませんでした。

これで当分は質問はないと思いますが・・・・・
また、何かの折には質問させて頂きますので、その節は宜しくお願い致します。
返信する