2013年8月30日金曜日

Apache の Rewrite

はまった、rewrite。
いろいろ調べてわかったことをメモしておく。

RewriteCondでマッチしたパラメータは%1で取れる
Rewrite後のURLで Urlencodeされたく無い場合は、NEをつける
クエリストリングを消したいときは、Ruleの最後に?をつける。

サンプル
/test/test.html?param1=1
を
/test/newtest.html#param1=1
にRewriteしたい場合

RewriteCond  %{THE_REQUEST} ^GET\ /test/test.html\?(.*)\ HTTP(.*)$
RewriteRule ^.* http://(自分のドメインにして)/test/search-result.html#%1? [NE,L]

で、できると思います!

Rewriteで参考にさせていただいているサイトは、↓です。

http://blog.dawgsdk.org/weblog/archives/411011

2013年8月6日火曜日

[apache] リダイレクトの書き方

■/news/index.php?cat=1 を /news/cat1/index.html へリダイレクトする際の書き方
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} ^/news/index.php$ [NC]
RewriteCond %{QUERY_STRING} "cat=1"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /news/cat1/index.html? [R=301,L]

※最後に?を付けないと、/news/cat1/index.html?cat=1 となってしまうから ? をつけましょう。


2013年8月2日金曜日

[PHP] ファイルを必ず読み込ませる

auto_prepend_file
が便利。

必ず読み込むので、定数定義などはこのファイルにしておけば簡単です。

.htaccess には ↓のように書いておきます。

php_value auto_prepend_file /var/www/html/_php/auto_inc.php
php_value display_errors stdout

2013年7月24日水曜日

[apache] SSIのエラーメッセージを非表示にしたい!

SSIファイルが無い時に、
[an error occurred while processing this directive]
というメッセージが表示されますよね。
これを、表示したくない時があります。そういう場合には、

<!--#config errmsg="<!-- none -->" -->
<!--#include virtual="/test.txt" -->

というように記述しておけば、[an error~ というメッセージが表示されなくなります。

これは便利!


2013年6月12日水曜日

[MT] カテゴリ別アーカイブで、特定カテゴリを出力したく無い場合

MTのアーカイブテンプレートで、ある特定カテゴリのアーカイブファイルを出力したく無い時があります。そんな時には以下の方法でやるとよいです。

1. カテゴリにカスタムフィールドをつけます。チェックボックスでいいでしょう。
2. 出力したいカテゴリだけ、チェックをつけます。
3. アーカイブマッピングで、種類:カテゴリとし、パスを

<mt:if tag="cat_output">%c/index.html</mt:if>

と記述します。cat_output はカスタムフィールド名です。
これで、出力の制御ができます。
このようにしないと不必要なファイルまで生成してしまうので、それが気になる時にはこのようにしましょう。

2013年3月19日火曜日

[apache] client denied by server configuration: が出るとき

Apacheでclient denied by server configuration:がログに表示される時は、

<directory> </directory> に

Order allow,deny
Allow from all

を忘れているときです。

2013年3月14日木曜日