<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>apache &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/apache/</link>
	<description>Feed of posts on WordPress.com tagged "apache"</description>
	<pubDate>Mon, 13 Oct 2008 22:52:09 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Getting HeaderName working on OpenBSD Apache]]></title>
<link>http://strlcat.wordpress.com/?p=43</link>
<pubDate>Mon, 13 Oct 2008 19:05:17 +0000</pubDate>
<dc:creator>strlcat</dc:creator>
<guid>http://strlcat.ro.wordpress.com/2008/10/13/getting-headername-working-on-openbsd-apache/</guid>
<description><![CDATA[OpenBSD
I wanted to include som text in a dir-listing on the stock Apache in OpenBSD. I found the He]]></description>
<content:encoded><![CDATA[[caption id="attachment_9" align="alignleft" width="121" caption="OpenBSD"]<a href="http://strlcat.wordpress.com/files/2008/09/obsd.gif"><img class="size-full wp-image-9" title="Puffy" src="http://strlcat.wordpress.com/files/2008/09/obsd.gif" alt="OpenBSD" width="121" height="121" /></a>[/caption]
<p>I wanted to include som text in a dir-listing on the stock Apache in OpenBSD. I found the HeaderName / ReadmeName directive in the conf.<br />
The HeaderName directive looks like this in the default configuration file:</p>
<p><code>HeaderName HEADER</code></p>
<p>There is also a module wich has to be enabled:</p>
<p><code>LoadModule headers_module       /usr/lib/apache/modules/mod_headers.so</code></p>
<p>The problem with this is that it doesn't work ;)<br />
After some googling I found a mailinglist in wich someone had discovered that Apache had problems with the HeaderName directive if the filename didn't have the ".html" extension. Since this solution was for Apache versions prior to 1.3.9 (The OpenBSD version is based on 1.3.29). I added .html to my HEADER file and README file and it started to work!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[FreeBSD port of mod_proxy_html is broken]]></title>
<link>http://bahumbug.wordpress.com/?p=603</link>
<pubDate>Mon, 13 Oct 2008 08:34:49 +0000</pubDate>
<dc:creator>niq</dc:creator>
<guid>http://bahumbug.ro.wordpress.com/2008/10/13/freebsd-port-of-mod_proxy_html-is-broken/</guid>
<description><![CDATA[I&#8217;ve just submitted a bug report at freebsd.org.
Seems they&#8217;re shipping mod_proxy_html 3]]></description>
<content:encoded><![CDATA[<p>I've just submitted a bug report at <a href="http://www.freebsd.org/">freebsd.org</a>.</p>
<p>Seems they're shipping <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a> 3, but failing to install proxy_html.conf for their users.  That means it ships configured to do nothing, where mod_proxy_html 2.x would've done its job with W3C HTML or XHTML.  In other words, use it as a drop-in replacement for the previous version, and it stops working.</p>
<p>Add to that, they're shipping version 3.0.0, which has a bug (fixed in 3.0.1) that segfaults in the absence of any ProxyHTMLLinks directive, and thus as-shipped with FreeBSD.</p>
<p>Any users wanting to fix this problem: all you have to do is grab the default <a href="http://apache.webthing.com/svn/apache/filters/proxy_html/proxy_html.conf">proxy_html.conf</a> and Include it into your httpd.conf, and mod_proxy_html is 3.x back to being a drop-in replacement for 2.x, but with new capabilities.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[XAMPPをphp5設定で動かしているときのphp.iniは/xampp/apache/bin/php.ini]]></title>
<link>http://neetup.wordpress.com/?p=165</link>
<pubDate>Mon, 13 Oct 2008 06:21:21 +0000</pubDate>
<dc:creator>sonosheet</dc:creator>
<guid>http://neetup.ro.wordpress.com/2008/10/13/xampp%e3%82%92php5%e8%a8%ad%e5%ae%9a%e3%81%a7%e5%8b%95%e3%81%8b%e3%81%97%e3%81%a6%e3%81%84%e3%82%8b%e3%81%a8%e3%81%8d%e3%81%aephpini%e3%81%afxamppapachebinphpini/</guid>
<description><![CDATA[なぜかもう二つ/xampp/php/フォルダにiniがあるけど、どうやらそれはphp4の時]]></description>
<content:encoded><![CDATA[<p>なぜかもう二つ/xampp/php/フォルダにiniがあるけど、どうやらそれはphp4の時に使ったりするらしい。</p>
<p>しかしなんで3つもあるんだ?よくわからんな...</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Turtle Island Project: President's lack of knowledge about Native American tribal sovereignty is sad and scary]]></title>
<link>http://turtleislandproject.wordpress.com/?p=122</link>
<pubDate>Mon, 13 Oct 2008 02:37:37 +0000</pubDate>
<dc:creator>yoopernewsman</dc:creator>
<guid>http://turtleislandproject.ro.wordpress.com/2008/10/12/turtle-island-project-president-lack-of-knowledge-about-native-american-tribal-sovereignty-is-sad-and-scary/</guid>
<description><![CDATA[President George W. Bush’s apparent lack of understanding on tribal sovereignty is examined by Rev]]></description>
<content:encoded><![CDATA[<p><strong>President George W. Bush’s apparent lack of understanding on tribal sovereignty is examined by Rev. Dr. Lynn Hubbard, executive director and co-founder of the <a href="http://www.turtleislandproject.org" target="_blank">non-profit Turtle Island Project</a> in Munising, Michigan.</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/NMUUnitedConfTillie-Lynn9-23-08.jpg" alt="" width="404" /></p>
<p>Bliptv:</p>
<p>[blip.tv ?posts_id=1344468&#38;dest=-1]</p>
<p>youtube:</p>
<p>This video was made as Hubbard made two presentations on September 24, 2008 during the third annual UNITED Conference at Northern Michigan University in Marquette, Michigan.</p>
<p>This video is about infamous comments about Native American Tribal Sovereignty made by President George W. Bush on August 6, 2004 at the UNITY conference in Washington D.C.</p>
<p>President Bush was asked the tribal sovereignty question by Mark Trahant, the Seattle Post-Intelligencer Editorial Page Editor, a member of the Shoshone-Bannock Tribe in Idaho and former president of the Native American Journalists Association.</p>
<p>Bush answered the question but that answer was so bizarre it caused journalists to laugh:<br />
“Tribal sovereignty means that. It’s sovereign," President Bush said. "You’ve been given sovereignty and you’re viewed as a sovereign entity.”</p>
<p>The conference involved about 7,500 journalists of color from the Native American Journalists Association, the National Association of Black Journalists, the National Association of Hispanic Journalists and the Asian-American Journalists Association.</p>
<p>Hubbard said it’s funny, scary and sad that President George W. Bush doesn’t understand the important issue of Native American tribal sovereignty.</p>
<p><a href="http://www.turtleislandproject.org" target="_blank">The Turtle Island Project</a> thanks <a href="http://www.democracynow.org" target="_blank">Democracy Now</a> for the use of their video of President Bush’s remarks on tribal sovereignty.<br />
<a href="http://www.democracynow.org" target="_blank">Democracy Now</a><br />
-------</p>
<p>Related Links:</p>
<p>-------<a href="http://www.wbcws.org" target="_blank"></a></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/WBCWSLogo1.jpg" alt="" width="160" /></p>
<p><a href="http://www.wbcws.org" target="_blank">White Buffalo Calf Woman Society, Inc.</a> (WBCWS)<br />
PO Box 227<br />
Mission, S.D.<br />
57555</p>
<p>For more info on the <a href="http://www.wbcws.org" target="_blank">WBCWS</a>:</p>
<p>Javier H. Alegree<br />
Public Relations Specialist<br />
Media and Education</p>
<p>(605) 856-2317<br />
(605) 856-2494 (fax)<br />
-------<br />
Official website of the <a href="http://www.rosebudsiouxtribe-nsn.gov/" target="_blank">Rosebud Sioux Tribe</a> - Sicangu Lakota</p>
<p>-------<br />
<a href="http://www.nmu.edu/" target="_blank">Northern Michigan University</a> (NMU)</p>
<p><a href="http://en.wikipedia.org/wiki/Northern_Michigan_University" target="_blank">NMU on Wikipedia</a><br />
-------<br />
<a href="http://webb.nmu.edu/Centers/NativeAmericanStudies" target="_blank">NMU Center for Native American Studies</a>:</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/NMUNAStudies.jpg" alt="" width="325" /></p>
<p>Center for Native American Studies</p>
<p>Northern Michigan University</p>
<p>112F Whitman Hall</p>
<p>Marquette, MI</p>
<p>49855</p>
<p>(906) 227-1397<br />
(906) 227-1396 (fax)<br />
e-mail:<br />
<a href="mailto:nasa@nmu.edu" target="_blank">nasa@nmu.edu</a></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/2008CTIBBQWingsSeeds7-16-08110-1.jpg" alt="" width="167" /></p>
<p><strong>April Lindala, Director<br />
Center for Native American Studies</strong></p>
<p>(906) 227-1397<br />
(906) 227-1396 (fax)<br />
---</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-10.jpg" alt="" width="160" /><br />
<strong>Grace Chaillier</strong></p>
<p><strong>NMU Adjunct Assistant Professor</strong></p>
<p>Sicangu Lakota band of the Rosebud Sioux</p>
<p>112G Whitman Hall</p>
<p>(906) 227-1390<br />
-------<br />
<a href="http://www.shannonthunderbird.com/indigenous_women_rights.htm" target="_blank">Great quotes about American Indian women</a> by nations:<br />
-------<br />
<a href="http://www.nmu.edu/UNITED" target="_blank">Uniting Neighbors in the Experience of Diversity</a> (UNITED):<br />
Northern Michigan University<br />
September 21-23, 2008<br />
Other UNITED links:<br />
<a href="http://webb.nmu.edu/UNITED/SiteSections/2008Schedule.shtml" target="_blank">http://webb.nmu.edu/UNITED/SiteSections/2008Schedule.shtml</a><br />
<a href="http://webb.nmu.edu/Webb/PDFs/UNITED/UNITED_2008.pdf" target="_blank">http://webb.nmu.edu/Webb/PDFs/UNITED/UNITED_2008.pdf</a><br />
<a href="http://webb.nmu.edu/UNITED/SiteSections/GD989.shtml" target="_blank">http://webb.nmu.edu/UNITED/SiteSections/GD989.shtml</a></p>
<p>UNITED Organizers:</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-9.jpg" alt="" width="161" /></p>
<p><strong>Dr. Judith Puncochar</strong></p>
<p><strong>NMU Professor</strong></p>
<p>906-227-1366<br />
-------<a href="http://www.turtleislandproject.org" target="_blank"></a></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TIPBridgelogo.jpg" alt="" width="267" /></p>
<p><strong><a href="http://www.turtleislandproject.org" target="_blank">Turtle Island Project</a></strong></p>
<p><strong>Munising, Michigan</strong></p>
<p><strong>Turtle island Project Co-founders:</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/RevDrLynnHubbardNMUUnited9-23-08-37.jpg" alt="" width="161" /></p>
<p><strong>Rev. Dr. Lynn Hubbard</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/9-14-07TIPRegConfGeorgeinMunising00.jpg" alt="" width="162" /></p>
<p><strong>Rev. Dr. George Cairns</strong><br />
---<br />
<a href="http://turtleislandtv.blip.tv" target="_blank">Turtle Island TV (blipTV)</a></p>
<p><a href="http://www.youtube.com/MunisingWhiteHorse" target="_blank">Turtle Island TV (youtube)</a></p>
<p><a href="http://www.myspace.com/TurtleIslandProject" target="_blank">Turtle Island (myspace)</a></p>
<p><strong>email the non-profit Turtle Island Project:</strong></p>
<p><a href="mailto:TurtleIslandProject@charter.net" target="_blank">TurtleIslandProject@charter.net</a><br />
-------<br />
<strong>Anishinaabe News:</strong></p>
<p><a href="http://webb.nmu.edu/Centers/NativeAmericanStudies/SiteSections/Resources/NAS/NishNews.shtml" target="_blank">NMU Native American student-run newspaper</a></p>
<p>-------<br />
<a href="http://www.democracynow.org" target="_blank">Democracy Now</a>:<br />
-------</p>
<p>More from Democracy Now on President Bush comments on Native American Tribal Sovereignty:</p>
<p><strong>"Tribal sovereignty means that; it's sovereign. I mean, you're a — you've been given sovereignty, and you're viewed as a sovereign entity. And therefore the relationship between the federal government and tribes is one between sovereign entities."</strong> — President Bush, Washington, D.C., Aug. 6, 2004</p>
<p>Asked about Indian tribal sovereignty issues, President Bush so fully flubbed his response that journalists in the room began laughing at him.</p>
<p>Watch following video first minute - then - got to 27 minutes into the 1 hour video - you’ll see Jesse Jackson joking about comment - and then interview with the reporter who asked bush the question<br />
<strong><br />
Video &#38; Audio - several formats (do right click “save as”):</strong><br />
<a href="http://www.archive.org/details/dn2004-0810_vid" target="_blank">http://www.archive.org/details/dn2004-0810_vid</a><br />
<strong>President Bush youtube video:</strong><br />
<a href="http://www.youtube.com/watch?v=B5xVRXLgLxw" target="_blank">http://www.youtube.com/watch?v=B5xVRXLgLxw</a><br />
<strong>Stories:</strong><br />
<a href="http://seattlepi.nwsource.com/local/186171_bushtribes13.html" target="_blank">http://seattlepi.nwsource.com/local/186171_bushtribes13.html</a><br />
<a href="http://politicalhumor.about.com/od/bushvideos/v/bushismtribal.htm" target="_blank">http://politicalhumor.about.com/od/bushvideos/v/bushismtribal.htm</a><br />
-------<br />
<strong>White House Press Release: What Bush meant to say if he’d stuck to his script:</strong><br />
<a href="http://www.whitehouse.gov/news/releases/2004/08/20040806-1.html" target="_blank">http://www.whitehouse.gov/news/releases/2004/08/20040806-1.html</a><br />
-------</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/PagansinPromisedLand2.jpg" alt="" width="149" height="224" /></p>
<p><strong>Book “Pagans in the Promised Land” by Steven T. Newcomb (2008):</strong></p>
<p><a href="http://www.indiancountrytoday.com/archive/28405454.html" target="_blank">http://www.indiancountrytoday.com/archive/28405454.html</a><br />
<a href="http://www.indiancountrytoday.com/archive/28407494.html" target="_blank">http://www.indiancountrytoday.com/archive/28407494.html</a><br />
<a href="http://www.indypendent.org/2008/04/25/discoverer-delusions" target="_blank">http://www.indypendent.org/2008/04/25/discoverer-delusions</a><br />
<a href="http://www.wiccanweb.ca/modules.php?op=modload&#38;name=News&#38;file=article&#38;sid=19853" target="_blank">http://www.wiccanweb.ca/modules.php?op=modload&#38;name=News&#38;file=article&#38;sid=19853</a><br />
<a href="http://www.kumeyaay.com/2008/01/johnson-v-mintosh-the-christian-right-of-colonization" target="_blank">http://www.kumeyaay.com/2008/01/johnson-v-mintosh-the-christian-right-of-colonization</a></p>
<p><a href="http://www.target.com/gp/detail.html/602-1027866-8825436?asin=1555916422&#38;afid=yahoosspplp_bmvd&#38;lnm=1555916422&#124;Pagans_in_the_Promised_Land:_Decoding_the_Doctrine_of_Christian_Discovery_:_Books&#38;ref=tgt_adv_XSNG1060" target="_blank">http://www.target.com/gp/detail.html/602-1027866-8825436?asin=1555916422&#38;afid=yahoosspplp_bmvd&#38;lnm=1555916422&#124;Pagans_in_the_Promised_Land:_Decoding_the_Doctrine_of_Christian_Discovery_:_Books&#38;ref=tgt_adv_XSNG1060</a></p>
<p><a href="http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?r=1&#38;ISBN=9781555916428&#38;ourl=Pagans-in-the-Promised-Land%2FNewcomb" target="_blank">http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?r=1&#38;ISBN=9781555916428&#38;ourl=Pagans-in-the-Promised-Land%2FNewcomb</a></p>
<p>-------<br />
<strong>Lakota Sioux &#38; Rosebud Reservation:</strong><br />
<a href="http://www.rosebudsiouxtribe-nsn.gov/history.htm" target="_blank">http://www.rosebudsiouxtribe-nsn.gov/history.htm</a><br />
<a href="http://en.wikipedia.org/wiki/Rosebud_Indian_Reservation" target="_blank">http://en.wikipedia.org/wiki/Rosebud_Indian_Reservation</a><br />
<a href="http://www.tradecorridor.com/rosebud/spirit.htm" target="_blank">http://www.tradecorridor.com/rosebud/spirit.htm</a><br />
<a href="http://www.sicangufund.org/rosebud/index.html" target="_blank">http://www.sicangufund.org/rosebud/index.html</a><br />
<a href="http://www.travelsd.com/ourhistory/sioux/tribes/rosebud.asp" target="_blank">http://www.travelsd.com/ourhistory/sioux/tribes/rosebud.asp</a><br />
<a href="http://pie.midco.net/lmrose/sicangu.htm" target="_blank">http://pie.midco.net/lmrose/sicangu.htm</a><br />
<a href="http://www.tolweb.org/treehouses/?treehouse_id=4571" target="_blank">http://www.tolweb.org/treehouses/?treehouse_id=4571</a><br />
<a href="http://www.nps.gov/archive/jeff/LewisClark2/TheJourney/NativeAmericans/LakotaSioux.htm" target="_blank">http://www.nps.gov/archive/jeff/LewisClark2/TheJourney/NativeAmericans/LakotaSioux.htm</a><br />
-------<br />
<strong>Native American Religious Freedom Act (1978):</strong><br />
<a href="http://en.wikipedia.org/wiki/American_Indian_Religious_Freedom_Act" target="_blank">http://en.wikipedia.org/wiki/American_Indian_Religious_Freedom_Act</a><br />
<a href="http://www.nps.gov/history/local-law/FHPL_IndianRelFreAct.pdf" target="_blank">http://www.nps.gov/history/local-law/FHPL_IndianRelFreAct.pdf</a><br />
<a href="http://www.answers.com/topic/american-indian-religious-freedom-act">http://www.answers.com/topic/american-indian-religious-freedom-act</a><br />
-------</p>
<p><strong>During its first year - Aug. 2007 to Aug. 2008 - the non-profit Turtle Island Project held free concerts, free conferences, and many other events including fundraisers for the Northern Michigan University EarthKeeper Student Team in Marquette, MI and for the White Buffalo Calf Woman Society in Mission, SD.</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TIPEventCollagesSpecials2.jpg" alt="" width="400" height="300" /></p>
<p>During its first year - Aug. 2007 to Aug. 2008 - the non-profit Turtle Island Project held free concerts, free conferences, and many other events including fundraisers for the Northern Michigan University EarthKeeper Student Team in Marquette, MI and for the White Buffalo Calf Woman Society in Mission, SD.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Reverse Proxy: Why and how with Apache]]></title>
<link>http://thelowedown.wordpress.com/?p=36</link>
<pubDate>Sun, 12 Oct 2008 21:19:04 +0000</pubDate>
<dc:creator>Robert</dc:creator>
<guid>http://thelowedown.ro.wordpress.com/2008/10/12/reverse-proxy-with-apache/</guid>
<description><![CDATA[A proxy is a gateway service for users to access the Internet.  This might be implemented to enforc]]></description>
<content:encoded><![CDATA[<p>A proxy is a gateway service for users to access the Internet.  This might be implemented to enforce security policy or simply as a performance enhancement since proxies often times are configured to cache fetched pages, increasing responsiveness for subsequent requests for the same content.  But what is a reverse proxy?  A reverse proxy acts as a gateway to internal servers.  It can be used to cache pages for performance reasons, just as with a forward proxy.  In my opinion, one of the most interesting reasons to use a reverse proxy is to provide an alternate or supplemental means of <em><strong>authenticated access</strong></em> to internal web-based services behind a firewall.  The configuration example provided here uses Apache and the mod_proxy module.  Diversification of access methods for road warriors and remote workers helps ensure that services are available under a variety of circumstances, some of which may preclude traditional IPsec VPN access, for example.  This can be a simple alternative to SSL-based VPNs, such as OpenVPN or SSL-Explorer. <!--more--></p>
<h2>Installation Requirements</h2>
<p>My examples will use Debian and Apache2, so if you use a different Linux distribution, or even another platform, the installation tools will vary, but the concepts are similar.  The following packages are required:</p>
<ol>
<li>Apache</li>
<li>mod_proxy</li>
<li>mod_proxy_http</li>
</ol>
<p>On Debian (and Ubuntu), the two modules above are provided through the default installation of apache; specifically, they are part of the apache2.2-common package.  Make sure you have these, regardless of what platform you're using.</p>
<h2>Basic Architecture and DNS</h2>
<p>Before we move into the actual configuration, let's consider how all of this will work.  The diagram below shows the basic architecture.</p>
[caption id="attachment_99" align="aligncenter" width="278" caption="Architectural Overview"]<a href="http://thelowedown.files.wordpress.com/2008/07/proxyarchitecture.png"><img class="size-medium wp-image-99" src="http://thelowedown.wordpress.com/files/2008/07/proxyarchitecture.png?w=278" alt="Architectural Overview" width="278" height="300" /></a>[/caption]
<p>Depending on the requirements, the traffic between the proxy server and the internal server may or may not be encrypted.</p>
<p>With respect to DNS, there are two distinct options:</p>
<ol>
<li>Use one name (e.g. proxy.example.com) and differentiate between internal servers/applications using a unique URL prefix, e.g. https://proxy.example.com/app1, https://proxy.example.com/app2, etc.</li>
<li>Create a one-to-one mapping between internal and external DNS names.</li>
</ol>
<p>While the first option does not reveal anything to any attackers about internal hostnames, it does require content providers and users to publish and maintain two different sets of URLs/bookmarks and use one for proxied access and the other for <em>direct</em> access, e.g. VPN or onsite.  This assumes that the internal servers also answer to HTTPS requests.  The second has obvious benefits; the first is really just obfuscation and cannot be relied on to provide real security.   However, if you place any value on obfuscation, perhaps you can offset some of the downside of revealing internal hostnames by choosing hostnames that do not relay a lot of information about the value of the target.  This is the approach I will describe below; see other documentation online for using distinct URLs, beginning with the ones listed at the end of this article.  To implement this approach, you create CNAME resource records in your DNS zone files pointing to your proxy server.</p>
<h2>DNS Configuration</h2>
<p>We will only cover the basics here.  In a nutshell, your configuration will include the following:</p>
<ol>
<li>An address resource record with externally-facing IP address of your proxy server.  This server is presumably in a DMZ, and may be NATed, so this DNS zone is for your external <em>view</em> (if you are using BIND 9 style views).</li>
<li>A CNAME resource record for each internal server for which you want to provide proxy access.  These all point to your proxy server.</li>
</ol>
<p>For example, they might look like the following (substituting a routable IP address for <em>a.b.c.d</em>):</p>
<pre>proxy.exaple.com.	86400	IN	A	a.b.c.d
app1.example.com.	86400	IN	CNAME	proxy.example.com.</pre>
<p>The proxy server must be able to resolve the internal IP addresses of any hosts for which it acts as a proxy.  Again, with BIND 9, this is simple to accomplish with views, which we will not cover here.</p>
<h2>Apache Configuration</h2>
<p>Some of the steps will be Debian (or Debian derivative) specific; adapt as needed.  The main configuration items will be applicable to apache, regardless of OS platform.</p>
<p>Since we want our traffic over the public Internet to be encrypted, we must setup SSL, so apache has to listen on two ports:</p>
<p><code>Listen 80<br />
Listen 443</code></p>
<p>Your mod_proxy settings should be close to what is shown below.  On Debian, all of these settings are in /etc/apache2/mods-available/proxy.conf (your distribution may or may not; they can just as easily be in some standard configuration file for all settings).</p>
<p><code><br />
#turning ProxyRequests on and allowing proxying from all may allow<br />
#spammers to use your proxy to send email.</code></p>
<p>ProxyRequests Off</p>
<p>AddDefaultCharset off<br />
Order deny,allow<br />
Allow from all</p>
<p># Enable/disable the handling of HTTP/1.1 "Via:" headers.<br />
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)<br />
# Set to one of: Off &#124; On &#124; Full &#124; Block</p>
<p>ProxyVia On</p>
<p>By default, Debian ships with access set to 'Deny from all'; if you fail to change this, you'll see a message like the following in your error log:</p>
<p><code>[Mon Jul 21 13:57:06 2008] [error] [client a.b.c.d] client denied by server configuration: proxy:http://www.example.com/</code></p>
<p>Do not forget to enable the proxy_html module, as shown below for Debian.</p>
<p><code>a2enmod proxy_html</code></p>
<p>Otherwise you'll see an error message like the following in your error log:</p>
<p><code>[Mon Jul 21 14:23:42 2008] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.</code></p>
<h3>Virtual Host Settings</h3>
<p>This is the where the fun begins!  The sole function of the first virtual host statement is to re-direct requests on TCP/80 to HTTPS.</p>
<pre><code>&#60;VirtualHost 192.168.100.1:80&#62;
  ServerName svr1.example.com
  ServerAlias svr1
  Redirect / https://srv1.example.com/
&#60;/VirtualHost&#62;

&#60;VirtualHost 192.168.100.1:443&#62;
  ServerName svr1.example.com
  ServerAlias svr1
  ProxyPass / http://svr1.example.com/
  ProxyPassReverse / http://svr1.example.com/

  SSLEngine On
  SSLProxyEngine On
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile /etc/ssl/certs/STAR_example_com.crt
  SSLCertificateKeyFile /etc/ssl/private/STAR.example.com.key
  SSLCertificateChainFile /etc/ssl/certs/STAR_example_com.ca-bundle

  &#60;Location /&#62;
    AuthType Basic
    AuthName "Example Inc. Proxy"
    AuthUserFile /etc/apache2/httpd.auth-basic
    AuthGroupFile /etc/apache2/httpd.auth-groups
    require group employees
    require user specialContractor
  &#60;/Location&#62;

&#60;/VirtualHost&#62;</code></pre>
<p>The real work for reverse proxies is done with two directives:</p>
<ol>
<li>ProxyPass</li>
<li>ProxyPassReverse</li>
</ol>
<h4><strong>ProxyPass</strong></h4>
<p>This directive maps the remote server's URL space into the space of the local server.  Since we use separate virtual hosts for each DNS name corresponding to individual backend servers, we only need one which maps to the <em>root</em> space.  If there are parts of the internal server's URL space you do <strong>not</strong> want to proxy, you can add directives to exclude those parts, but since the "first match wins" be sure to include these <strong>before</strong> the the all-encompassing directive.  For example:</p>
<pre><code>ProxyPass /some/part !
ProxyPass / http://app1.example.com
</code></pre>
<p>There are other, more complicated use cases for this directive when DNS names do not match.  The approach described here makes the configuration much simpler.</p>
<h4 class="note"><strong>ProxyPassReverse</strong></h4>
<p>This directive tells Apache to adjust the URL in certain HTTP responses.  This is critical if the proxy URL namespace does not match the backend server's.  Since we are using the same DNS name inside and outside, this may only matter if you are using HTTPS to/from the end-user, but HTTP to the inside server (whether you do this should be considered carefully).  It will not rewrite URL references inside the HTML (see mod_proxy_html if you need to do this).</p>
<h3>Authentication</h3>
<p>You may have noticed the location block above with directives for authentication:</p>
<pre><code>  &#60;Location /&#62;
    AuthType Basic
    AuthName "Example Inc. Proxy"
    AuthUserFile /etc/apache2/httpd.auth-basic
    AuthGroupFile /etc/apache2/httpd.auth-groups
    require group employees
    require user specialContractor
  &#60;/Location&#62;
</code></pre>
<p>This authentication is in addition to whatever the web service may require.  This protects against unrestricted access to internal service, which could subject it to remote denial-of-service attacks.  We can use basic (unencrypted authentication) since we have already re-directed to HTTPS.  We use both a user and group file.  This is so we can provide different proxied services for different groups of users, some that are perhaps only available to a small number of users.  See the Apache documentation for details on these files.  You can provide a simple web page for users to request a <em>proxy account</em>, and, for example, send the username and encrypted password via e-mail to someone who can manage inclusion in the files referenced in the location block.</p>
<h3>Additional Resources</h3>
<p>If you are interested in the subtleties of reverse proxy configuration, check out the following pages:</p>
<ol>
<li><a title="Running a Reverse Proxy in Apache" href="http://www.apachetutor.org/admin/reverseproxies" target="_blank">Running a Reverse Proxy in Apache</a><br />
This is a very detailed description of reverse proxy configuration without matching DNS names for the external proxied service and the backend service.</li>
<li><a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html" target="_blank">Apache mod_proxy documentation</a><br />
This is the reference document for details on the individual directives, with examples.</li>
</ol>
]]></content:encoded>
</item>
<item>
<title><![CDATA[HTACCESS URL Rewriting]]></title>
<link>http://expertzweb.wordpress.com/?p=65</link>
<pubDate>Sun, 12 Oct 2008 17:01:19 +0000</pubDate>
<dc:creator>Miracle Studios</dc:creator>
<guid>http://expertzweb.ro.wordpress.com/2008/10/12/htaccess-url-rewriting/</guid>
<description><![CDATA[

The Apache server’s mod_rewrite module gives you the ability to transparently redirect one URL t]]></description>
<content:encoded><![CDATA[<div id="content">
<!-- Intro --></p>
<p>The Apache server’s <code class="unix">mod_<span class="lowlight">rewrite</span></code> module gives you the ability to transparently redirect one URL to another, without the user’s knowledge. This opens up all sorts of possibilities, from simply redirecting old URLs to new addresses, to cleaning up the ‘dirty’ URLs coming from a poor publishing system — giving you URLs that are friendlier to both readers and search engines.</p>
<p><!-- Content Start --></p>
<p><a></p>
<h2 class="heading">An Introduction to Rewriting</h2>
<p>Readable URLs are nice. A well designed website will have a logical file system layout, with smart folder and file names, and as many implementation details left out as possible. In the most well designed sites, readers can <strong>guess at filenames with a high level of success</strong>.</p>
<p>However, there are some cases when the best possible information design can’t stop your site’s URLs from being nigh-on impossible to use. For instance, you may be using a Content Management System that serves out URLs that look something like</p>
<p>http://www.example.com/viewcatalog.asp?category=hats&#38;prodID=53</p>
<p>This is a horrible URL, but it and its brethren are becoming increasingly prevalent in these days of dynamically-generated pages. There are a number of problems with an URL of this kind:</p>
<ul class="wellspaced">
<li>
<p>It <strong>exposes the underlying technology</strong> of the website (in this case <acronym title="[ Active Server Page ] - Microsoft’s dynamic webpage technology" class="help">ASP</acronym>). This can give potential hackers clues as to what type of data they should send along with the query string to perform a ‘front-door’ attack on the site. Information like this shouldn’t be given away if you can help it.</p>
<p>Even if you’re not overly concerned with the security of your site, <strong>the technology you’re using is at best irrelevant</strong> — and at worst a source of confusion — to your readers, so it should be hidden from them if possible.</p>
<p>Also, if at some point in the future you decide to change the language that your site is based on (to <a href="http://php.net/">» PHP</a>, for instance); all your old URLs will stop working. This is a pretty serious problem, as anyone who has tackled a full-on site <span class="lowlight">rewrite</span> will attest.</p>
</li>
<li><strong>The URL is littered with awkward punctuation</strong>, like the question mark and ampersand. Those &#38; characters, in particular, are problematic because if another webmaster links to this page using that URL, the un-escaped ampersands will mess up their <a href="#">XHTML</a> conformance. They will have to laboriously replace all the ampersands with <code>&#38;</code> character entities, which is often forgotten.</li>
<li>Some <strong>search engines won’t index pages which they think are generated dynamically</strong>. They’ll see that question mark in the URL and just turn their asses around.</li>
</ul>
<p>Luckily, using rewriting, we can clean up this URL to something far more manageable. For example, we could map it to</p>
<p>http://www.example.com/catalog/hats/53/</p>
<p>Much better. This URL is more logical, readable and memorable, and will be picked up by all search engines. The <i>faux</i>-directories are short and descriptive. Importantly, it looks more <em>permanent</em>.</p>
<p>To use <code class="unix">mod_<span class="lowlight">rewrite</span></code>, you supply it with the link text you want the server to match, and the real URLs that these URLs will be redirected to. The URLs to be matched can be straight file addresses, which will match one file, or they can be <em>regular expressions</em>, which will match many files.</p>
<p><a></p>
<h2 class="heading">Basic Rewriting</h2>
<p>Some servers will not have <a href="http://httpd.apache.org/docs/mod/mod_rewrite.html">» mod_<span class="lowlight">rewrite</span></a> enabled by default. As long as the <a href="http://modules.apache.org/">» module</a> is present in the installation, you can enable it simply by starting a .<span class="lowlight">htaccess</span> file with the command</p>
<p class="code"><code class="unix"><strong><span class="lowlight">Rewrite</span>Engine</strong> on</code></p>
<p>Put this .<span class="lowlight">htaccess</span> file in your root so that rewriting is enabled throughout your site. You only need to write this line once per .<span class="lowlight">htaccess</span> file.</p>
<p><a></p>
<h3 class="subhead">Basic Redirects</h3>
<p>We’ll start off with a straight redirect; as if you had moved a file to a new location and want all links to the old location to be forwarded to the new location. Though you shouldn’t really ever <a title="As Sir Tim says, ‘Cool URIs don’t change’" href="http://www.w3.org/Provider/Style/URI.html">» move a file</a> once it has been placed on the web; at least when you <em>simply have to</em>, you can do your best to stop any old links from breaking.</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Engine</strong> on<br><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>old\.html<strong>$</strong>  new.html<br />
</code></p>
<p>Though this is the simplest example possible, it may throw a few people off. The structure of the ‘old’ URL is the only difficult part in this <code class="unix"><span class="lowlight">Rewrite</span>Rule</code>. There are three special characters in there.</p>
<ul class="wellspaced">
<li>The caret, <code class="unix">^</code>, signifies the <strong>start of an URL</strong>, under the current directory. This directory is whatever directory the .<span class="lowlight">htaccess</span> file is in. You’ll start almost all matches with a caret.</li>
<li>The dollar sign, <code class="unix">$</code>, signifies the <strong>end of the string to be matched</strong>. You should add this in to stop your rules matching the first part of longer URLs.</li>
<li>The period or dot before the file extension is a special character in regular expressions, and would mean something special if we didn’t <strong>escape it with the backslash</strong>, which tells Apache to treat it as a normal character.</li>
</ul>
<p>So, this rule will make your server transparently redirect from old.html to the new.html page. Your reader will have no idea that it happened, and it’s pretty much instantaneous.</p>
<p><a></p>
<h3 class="subhead">Forcing New Requests</h3>
<p>Sometimes you <em>do</em> want your readers to know a redirect has occurred, and can do this by forcing a new <abbr title="[ HyperText Transfer Protocol ] - The protocol designed for the Internet, to send webpages" class="help">HTTP</abbr> request for the new page. This will make the browser load up the new page as if it was the page originally requested, and the location bar will change to show the URL of the new page. All you need to do is turn on the <code class="unix">[R]</code> flag, by appending it to the rule:</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>old\.html<strong>$</strong>  new.html <strong>[R]</strong><br />
</code></p>
<p><a></p>
<h2 class="heading">Using Regular Expressions</h2>
<p>Now we get on to the <em>really</em> useful stuff. The power of <code class="unix">mod_<span class="lowlight">rewrite</span></code> comes at the expense of complexity. If this is your first encounter with regular expressions, you may find them to be a tough nut to crack, but the options they afford you are well worth the slog. I’ll be providing plenty of examples to guide you through the basics here. </p>
<p>Using regular expressions you can have your rules matching a set of URLs at a time, and mass-redirect them to their actual pages. Take this rule;</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>products/([0-9][0-9])/<strong>$</strong> /productinfo.php?prodID=$1<br />
</code></p>
<p>This will match any URLs that start with ‘products/’, followed by any two digits, followed by a forward slash. For example, this rule will match an URL like products/12/ or products/99/, and redirect it to the PHP page.</p>
<p>The parts in square brackets are called <em>ranges</em>. In this case we’re allowing anything in the range 0-9, which is any digit. Other ranges would be <code class="unix">[A-Z]</code>, which is any uppercase letter; <code class="unix">[a-z]</code>, any lowercase letter; and <code class="unix">[A-Za-z]</code>, any letter in either case.</p>
<p>We have <strong>encased the regular expression part of the URL in parentheses</strong>, because we want to <strong>store whatever value was found here for later use</strong>. In this case we’re sending this value to a PHP page as an argument. Once we have a value in parentheses we can use it through what’s called a <em>back-reference</em>. <strong>Each of the parts you’ve placed in parentheses are given an index, starting with one</strong>. So, the first back-reference is <code class="unix">$1</code>, the third is <code class="unix">$3</code> etc.</p>
<p>Thus, once the redirect is done, the page loaded in the readers’ browser will be something like productinfo.php?prodID=12 or something similar. Of course, we’re keeping this true URL secret from the reader, because it likely ain’t the prettiest thing they’ll see all day.</p>
<p><a></p>
<h3 class="subhead">Multiple Redirects</h3>
<p>If your site visitor had entered something like products/12, the rule above won’t do a redirect, as the slash at the end is missing. To promote good URL writing, we’ll take care of this by doing a direct redirect to the same URL with the slash appended.</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>products/([0-9][0-9])<strong>$</strong>  /products/$1/ <strong>[R]</strong><br />
</code></p>
<p><strong>Multiple redirects in the same .<span class="lowlight">htaccess</span> file can be applied in sequence</strong>, which is what we’re doing here. This rule is added before the one we did above, like so:</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>products/([0-9][0-9])<strong>$</strong>  /products/$1/ <strong>[R]</strong><br><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>products/([0-9][0-9])/<strong>$</strong>  /productinfo.php?prodID=$1<br />
</code></p>
<p>Thus, if the user types in the URL products/12, our first rule kicks in, rewriting the URL to include the trailing slash, and doing a new request for products/12/ so the user can see that we likes our trailing slashes around here. Then the second rule has something to match, and transparently redirects this URL to productinfo.php?prodID=12. <em>Slick.</em></p>
<p><a></p>
<h3 class="subhead">Match Modifiers</h3>
<p>You can expand your regular expression patterns by adding some modifier characters, which allow you to match URLs with an indefinite number of characters. In our examples above, we were only allowing two numbers after products. This isn’t the most expandable solution, as if the shop ever grew beyond these initial confines of 99 products and created the URL productinfo.php?prodID=100, our rules would cease to match this URL.</p>
<p>So, instead of hard-coding a set number of digits to look for, we’ll work in some room to grow by allowing any number of characters to be entered. The rule below does just that:</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>products/([0-9]<strong>+</strong>)<strong>$</strong>  /products/$1/ <strong>[R]</strong><br />
</code></p>
<p>Note the plus sign (<code class="unix">+</code>) that has snuck in there. This modifier changes whatever comes directly before it, by saying ‘<strong>one or more of the preceding character or range</strong>.’ In this case it means that the rule will match any URL that starts with products/ and ends with at least one digit. So this’ll match both products/1 and products/1000.</p>
<p>Other match modifiers that can be used in the same way are the asterisk, <code class="unix">*</code>, which means ‘zero or more of the preceding character or range’, and the question mark, <code class="unix">?</code>, which means ‘zero or only one of the preceding character or range.’</p>
<p><a></p>
<h3 class="subhead">Adding Guessable URLs</h3>
<p>Using these simple commands you can set up a slew of ‘shortcut URLs’ that you think visitors will likely try to enter to get to pages they know exist on your site. For example, I’d imagine a lot of visitors try jumping straight into our <a href="#">stylesheets</a> section by typing the URL http://www.yourhtmlsource.com/css/. We can catch these cases, and hopefully alert the reader to the correct address by updating their location bar once the redirect is done with these lines:</p>
<p class="code"><code class="unix"><br />
<strong><span class="lowlight">Rewrite</span>Rule</strong> <strong>^</strong>css(/)?<strong>$</strong> /stylesheets/ <strong>[R]</strong><br />
</code></p>
<p>The simple regular expression in this rule allows it to match the css URL with or without a trailing slash. The question mark means ‘zero or one of the preceding character or range’ — in other words either yourhtmlsource.com/css or yourhtmlsource.com/css/ will both be taken care of by this one rule.</p>
<p>This approach means less confusing <a title="Even if you’ve set up your own, nobody likes to hit them" href="#">404 errors</a> for your readers, and a site that seems to run a whole lot smoother all ’round.</p>
</div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[.htaccess Tips and Tricks.]]></title>
<link>http://expertzweb.wordpress.com/?p=63</link>
<pubDate>Sun, 12 Oct 2008 16:54:43 +0000</pubDate>
<dc:creator>Miracle Studios</dc:creator>
<guid>http://expertzweb.ro.wordpress.com/2008/10/12/htaccess-tips-and-tricks/</guid>
<description><![CDATA[&lt;ifModule&gt;
more clever stuff here
&lt;/ifModule&gt;

redirecting and rewriting

&#8220;The gre]]></description>
<content:encoded><![CDATA[<div class="ht-title">&#60;ifModule&#62;</p>
<p><span class="clever">more clever stuff here</span></p>
<p>&#60;/ifModule&#62;</p></div>
<div class="small-space"></div>
<h2>redirecting and rewriting</h2>
<blockquote>
<div id="quote-intro" class="blockquote"><em>"The great thing about mod_rewrite is it gives you all the<br />
configurability and flexibility of Sendmail. The downside to mod_rewrite is that<br />
it gives you all the configurability and flexibility of Sendmail."</em></p>
<div class="right">- Brian Behlendorf, Apache Group</div>
</div>
</blockquote>
<div id="section-intro" class="small-space"></div>
<div id="intro">One of the more powerful tricks of the .htaccess hacker is the ability to rewrite URLs. This enables us to do some mighty manipulations on our links; useful stuff like transforming very long URL's into short, cute URLs, transforming dynamic <span class="urltxt">?generated=page&#38;URL's</span> into /friendly/flat/links, redirect missing pages, preventing hot-linking, performing automatic language translation, and much, much more.</p>
<p>Make no mistake, mod_rewrite is <em>complex</em>. This isn't the subject for a quick bite-size tech-snack, probably not even a week-end crash-course, I've seen guys pull off some real cute stuff with mod_rewrite, but with kudos-hat tipped firmly towards that bastard operator from hell, Ralf S. Engelschall, author of the magic module itself, I have to admit that a great deal of it still seems so much voodoo to me.</p>
<p>The way that rules can work one minute and then seem not to the next, how browser and other in-between network caches interact with rules and testing rules is often baffling, maddening. When I feel the need to bend my mind completely out of shape, I mess around with mod_rewrite!</p>
<p>After all this, it does work, and while I'm not planning on taking that week-end crash-course any time soon, I have picked up a few wee tricks myself, messing around with webservers and web sites, this place..</p>
<p>The plan here is to just drop some neat stuff, examples, things that have proven useful, and work on a variety of server setups; there are apache's all over my LAN, I keep coming across old .htaccess files stuffed with past rewriting experiments that either worked; and I add them to my list, or failed dismally; and I'm surprised that more often these days, I can <em>see exactly why!</em></p>
<p>Very little here is my own <a id="this-article-MIRRORED-hahahah-worldwide" title="well, okay, a couple of things I did 'invent' - the auto-translation came to me in a dream, and then there's - a limit to anchor titles! ;o)">invention</a>. Even the bits I figured out myself were already well documented, I just hadn't understood the documents, or couldn't find them. Sometimes, just looking at the same thing from a different angle can make all the difference, so perhaps this humble stab at URL Rewriting might be of some use. I'm writing it for me, of course. but I do get some credit for this..</p>
<blockquote>
<div id="intro-time-to-get-dynamic" class="blockquote"><code><br />
<span class="code-comment"># time to get dynamic, see..</span></p>
<p>RewriteRule ^(.*)\.htm $1.php</p>
<p></code></div>
</blockquote>
</div>
<div id="section-beginning" class="tiny-space"></div>
<h3>beginning rewriting..</h3>
<div id="beginning">
<p>Whenever you use mod_rewrite (the part of apache that does all this magic), you need to do..</p>
<blockquote>
<div id="rewrite-rule-follow-symlinks" class="blockquote">
<div class="codetop">you only need to do this once per .htaccess file:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p></div>
</div>
</blockquote>
<p>..before any ReWrite rules. <strong>note:</strong> <tt>+FollowSymLinks</tt> <strong>must</strong> be enabled for <em>any</em> rules to work, this is a security requirement of the rewrite engine. Normally it's enabled in the root and you shouldn't have to add it, but it doesn't hurt to do so, and I'll insert it into all the examples on this page, just in case*.</p>
<p>The next line simply switches on the rewrite engine<br />
for that folder. if this <a title="any instruction for a server, either in an httpd.conf, a php.ini, or an .htaccess file is called a 'directive'">directive</a> is in you main .htaccess file, then the ReWrite engine is theoretically enabled for your entire site, but it's wise to always add that line before you write any redirections, <em>anywhere</em>.</p>
<p><strong>* </strong>Although highly unlikely, your host may have <tt>+FollowSymLinks</tt> enabled at the root level, yet <em>disallow</em> its addition in .htaccess; in which case, adding <tt>+FollowSymLinks</tt> will break your setup (probably a 500 error), so just remove it, and your rules should work fine.</p>
<p><strong>Important:</strong> While some of the directives on this page may appear split onto two lines, in your .htaccess file, they <em>must</em> exist completely on one line. If you drag-select and copy the directives on this page, they should paste just fine into any text editor.</div>
<div id="section-simple_rewriting" class="small-space"></div>
<h3>simple rewriting</h3>
<div id="simple">
<p>Simply put, Apache scans all incoming URL requests, checks for matches in our .htaccess file and rewrites those matching URLs to whatever we specify. something like this..</p>
<blockquote>
<div id="rewrite-rule-htm-to-php" class="blockquote">
<div class="codetop">all requests to whatever.htm will be sent to whatever.php:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^(.*)\.htm$ $1.php [NC]</p></div>
</div>
</blockquote>
<p>Handy for anyone updating a site from static htm (you could use .html, or .htm(.*), .htm?, etc) to dynamic php pages; requests to the old pages are automatically rewritten to our new urls. no one notices a thing, visitors and search engines can access your content either way. leave the rule in; as an added bonus, this enables us to easily split php code and its included html structures into two separate files, a nice idea; makes editing and updating a breeze. The [NC] part at the end means "No Case", or "case-insensitive", but we'll get to the switches later.</p>
<p>Folks can link to whatever.htm or whatever.php, but they always get whatever.php in their browser, and this works even if whatever.htm doesn't exist! but I'm straying..</p>
<p>As it stands, it's a bit tricky; folks will still have whatever.htm in their browser address bar, and will still keep bookmarking your old .htm URL's. Search engines, too, will keep on indexing your links as .htm, some have even argued that serving up the same content from two different places could have you <em>penalized</em> by the search engines. This may or not bother you, but if it does, mod_rewrite can do some more magic..</p>
<blockquote>
<div id="rewrite-rule-htm-to-php-permanent" class="blockquote">
<div class="codetop">this will do a "real" http redirection:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^(.+)\.htm$ http://corz.org/$1.php [R=301,NC]</p></div>
</div>
</blockquote>
<p>This time we instruct mod_rewrite to send a proper HTTP "permanently moved" redirection, aka; "301". Now, instead of just redirecting on-the-fly, the user's browser is physically redirected to a new URL, and <span class="urltxt">whatever.php</span> appears in their browser's address bar, and search engines and other spidering entities will automatically update their links to the .php versions; everyone wins. and you can take your time with the updating, too.</p>
<p>For details of the many 30* response codes you can send, see <a id="link-http-response-codes" title="Stick with the 300 range!" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html">here</a>.</div>
<div id="section-not_so_simple" class="small-space"></div>
<h3>not-so-simple rewriting ... flat links and more</h3>
<div id="not-so-simple">
<p>You may have noticed, the above examples use <em><a title="mod_rewrite uses POSIX standard regular expressions">regular expression</a></em> to match variables. What that simply means is.. match the part inside (.+) and use it to construct "$1" in the new URL. In other words, (.+) = $1 you could have multiple (.+) parts and for each, mod_rewrite automatically creates a matching $1, $2, $3, etc, in your target (aka. 'substitution') URL. This facility enables us to do all sorts of tricks, and the most common of those, is the creation of "flat links"..</p>
<p>Even a cute short link like <span class="urltxt">http://mysite/grab?file=my.zip</span> is too ugly for some people, and nothing less than a true old-school solid <span class="urltxt">domain/path/flat/link</span> will do. Fortunately, mod_rewrite makes it easy to convert URLs with query strings and multiple variables into exactly this, something like..</p>
<blockquote>
<div id="rewrite-rule-with-regex" class="blockquote">
<div class="codetop">a more complex rewrite rule:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^files/([^/]+)/([^/]+).zip /download.php?section=$1&#38;file=$2 [NC]</p></div>
</div>
</blockquote>
<p>would allow you to present this link as..</p>
<p><span class="urltxt"> http://mysite/files/games/hoopy.zip</span></p>
<p>and in the background have that transparently translated, server-side, to..</p>
<p><span class="urltxt"> http://mysite/download.php?section=games&#38;file=hoopy</span></p>
<p>which some script could process. You see, many search engines simply don't follow our <span class="urltxt">?generated=links</span>, so if you create generating pages, this is useful. However, it's only the dumb search engines that can't handle these kinds of links; we have to ask ourselves.. do we really want to be listed by the dumb search engines? <a title="the world's number one search engine" href="http://www.google.com">Google</a> will handle a good few parameters in your URL without any problems, and the (hungry hungry) <a title="many now have .htaccess deny rules in place for this voracious page-guzzler!" href="http://search.msn.com/msnbot.htm">msn-bot</a> stops at nothing to <em>get that page</em>, sometimes again and again and again…</p>
<p>I personally feel it's the search engines that should strive to keep up with modern web technologies, in other words; we shouldn't have to dumb-down for them. But that's just my opinion. Many <em>users</em> will prefer <span class="urltxt">/files/games/hoopy.zip</span> to <span class="urltxt">/download.php?section=games&#38;file=hoopy</span> but I don't mind either way. As someone pointed out to me recently, presenting links as <span class="urltxt">standard/flat/paths</span> means you're less likely to get folks doing typos in typed URL's, so something like..</p>
<blockquote>
<div id="rewrite-rule-more-comlex-regex" class="blockquote">
<div class="codetop">an even more complex rewrite rule:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^blog/([0-9]+)-([a-z]+) http://corz.org/blog/index.php?archive=$1-$2 [NC]</p></div>
</div>
</blockquote>
<p>would be a neat trick, enabling anyone to access my blog archives by doing..</p>
<p><a title="any excuse for an inward link!" href="http://corz.org/blog/2003-nov"><span class="urltxt">http://corz.org/blog/2003-nov</span></a></p>
<p>in their browser, and have it automagically transformed server-side into..</p>
<p><a title="ditto!" href="http://corz.org/blog/index.php?archive=2003-nov"><span class="urltxt">http://corz.org/blog/index.php?archive=2003-nov</span></a></p>
<p>which <a title="drop-in-and-blog blogging software from corz.org" href="/blog/">corzblog</a> would understand. It's easy to see that with a little imagination, and a basic understanding of <a title="understanding regex will empower you in ways you would not imagine" href="http://www.google.com/search?q=posix+regular+expression+syntax"><br />
posix regular expression</a>, you can perform some highly cool URL manipulations.</p>
<p>Here's the very basics of regexp (expanded from the apache mod_rewrite documentation)..</p>
<div id="section-regexp_basics" class="tiny-space"></div>
<blockquote id="regexp-basics-special-characters">
<div id="rewrite-rule-regexp-special-characters" class="blockquote">
<pre><strong>Escaping:</strong>

<strong>\</strong>char escape that particular char

For instance to specify special characters.. <strong>[].()\</strong> etc.

<strong>Text:</strong>

<strong>.</strong>             Any single character  (on its own = the entire URI)
<strong>[</strong>chars<strong>]</strong>       Character class: One of following chars
<strong>[^</strong>chars<strong>]</strong>      Character class: None of following chars
text1<strong>&#124;</strong>text2   Alternative: text1 or text2 (i.e. "or")

<strong>e.g.</strong> <strong>[^/]</strong> matches any character <em>except</em> <strong>/</strong>
<strong>(foo&#124;bar)\.html</strong> matches <strong>foo.html</strong> <em>and</em> <strong>bar.html</strong>

<strong>Quantifiers:</strong>

<strong>?</strong> 0 or 1 of the preceding text
<strong>*</strong> 0 or N of the preceding text  (hungry)
<strong>+</strong> 1 or N of the preceding text

<strong>e.g.</strong> <strong>(.+)\.html?</strong> matches <strong>foo.htm</strong> <em>and</em> <strong>foo.html</strong>
<strong>(foo)?bar\.html</strong> matches <strong>bar.html</strong> <em>and</em> <strong>foobar.html</strong>

<strong>Grouping:</strong>

<strong>(</strong>text<strong>)</strong>  Grouping of text

Either to set the borders of an alternative or
for making backreferences where the <strong>n</strong>th group can
be used on the target of a RewriteRule with <strong>$n</strong>

<strong>e.g. </strong> ^<strong>(.*)</strong>\.html foo.php?bar=<strong>$1</strong>

<strong>Anchors:</strong>

<strong>^</strong>    Start of line anchor
<strong>$</strong>    End   of line anchor

An anchor explicitly states that the character <em>right next to it</em> MUST
be either the very first character ("^"), or the very last character ("$")
of the URI string to match against the pattern, e.g..

<strong>^foo(.*)</strong> matches <strong>foo</strong> and <strong>foobar</strong> but <em>not</em> <strong>eggfoo</strong>
<strong>(.*)l$</strong> matches <strong>fool</strong> and <strong>cool</strong>, but <em>not</em> <strong>foo</strong></pre>
</div>
</blockquote>
</div>
<div id="section-short_URLs" class="small-space"></div>
<h3>shortening URLs</h3>
<div id="short-urls">
<p>One common use of mod_rewrite is to shorten URL's. Shorter URL's are easier to remember and, of course, easier to type. An example..</p>
<blockquote>
<div id="rewrite-rule-short-urls" class="blockquote">
<div class="codetop">beware the regular expression:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine On</p>
<p>RewriteRule ^grab(.*) /public/files/download/download.php$1</p></div>
</div>
</blockquote>
<p>this rule would transform this user's URL..</p>
<p><span class="urltxt"> http://mysite/grab?file=my.zip</span></p>
<p>server-side, into..</p>
<p><span class="urltxt"> http://mysite/public/files/download/download.php?file=my.zip</span></p>
<p>which is a wee trick I use for my distro machine, among other things. everyone likes short URL's, and so will you; using this technique, you can move <span class="urltxt">/public/files/download/</span> to <em>anywhere</em> else in your site, and all the old links still work fine; simply alter your .htaccess file to reflect the new location. edit one line, done - nice - means even when stuff is way deep in your site you can have cool links like this..</p>
<p>&#60;!--<br />
//&#60;![CDATA[<br />
&#60;!<br />
document.write("<a href="\">/trueview/sample.php")<br />
//--&#62;<br />
// --&#62;<br />
// --&#62;<a title="just a simple link (opens in a windoid)" href="OpenWindow('/trueview/php/sample.php',432,460,330,150)">/trueview/sample.php</a><br />
&#38;lt;/p&#38;gt; &#38;lt;div&#38;gt; &#38;lt;a href="/trueview/php/sample.php" mce_href="/trueview/php/sample.php"&#38;gt;&#38;lt;br /&#38;gt; /trueview/php/sample.php&#38;lt;/a&#38;gt; &#38;lt;/div&#38;gt; &#38;lt;p&#38;gt;<br />
and <a id="bbtagslink" title="the corzblog bbcode parser bbcode guide, way deep in the site" href="/bbtags">this</a>; links which are not only short, but <em>flat</em>..</div>
<div id="section-capturing_variables" class="small-space"></div>
<h3>capturing variables</h3>
<div id="capturing-variables">
<p>Slapping <tt>(.*)</tt> onto the end of the request part of a <tt>ReWriteRule</tt> is just fine when using a simple <tt>$_GET</tt> variable, but sometimes you want to do trickier things, like capturing <em>particular</em> variables and converting them into <em>other</em> variables in the target URL. Or something else..</p>
<p>When capturing variables, the first thing you need to know about, is the <tt>[QSA]</tt> flag, which simply tags all the original variables back onto the end of the target url. This may be all you need. The second thing, is <tt>%{QUERY_STRING}</tt>, an Apache server string we can capture variables from, using simple <tt>RewriteCond</tt> (aka. <em>conditional</em> ) statements.</p>
<p>In the following example, the <tt>RewriteCond</tt> statement checks that the query string has the <tt>foo</tt> variable set, and captures its value while it's there. In other words, only requests for <tt>grab</tt> that have the <tt>foo</tt> variable set, will be rewritten, and while we're at it, we'll also switch <tt>foo</tt>, for <tt>bar</tt>..</p>
<blockquote>
<div id="simple-capture-variables" class="blockquote">
<div class="codetop">capturing a $_GET variable:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{QUERY_STRING} foo=(.*)</p>
<p>RewriteRule ^grab(.*) /page.php?bar=%1</p></div>
</div>
</blockquote>
<p>would translate a link/user's request for..</p>
<p><tt>http://domain.com/grab?foo=foobar</tt></p>
<p>server-side, into..</p>
<p><tt>http://domain.com/page.php?bar=foobar</tt></p>
<p>Which is to say, the user's browser would be fed <tt>page.php</tt> (without an <tt>[R]</tt> flag in the <tt>RewriteRule</tt>, their address bar would still read <tt>/grab?foo=foobar</tt>). The variable <tt>bar</tt> would be available to your script, with its value set to <tt>foobar</tt>.</p>
<p>This variable has been magically created, by simply using a regular <tt><strong>?</strong></tt> in the target of the <tt>RewriteRule</tt>, and tagging on the first captured backreference, <strong>%1</strong>.. <tt>?bar=%1</tt></p>
<p><strong>Note</strong> how we use the <code><strong>%</strong></code> character, to specify variables captured in <tt>RewriteCond</tt> statements, aka "Backreferences". This is exactly like using <strong>$1</strong> to specify numbered backreferences captured in <tt>RewriteRule</tt> patterns, except for those captured inside <tt>RewriteCond</tt> statements, we use <code><strong>%</strong></code> instead of <strong>$</strong>.</p>
<p>You can use the <tt>[QSA]</tt> flag in addition to these query string manipulations, merge them. In the next example, the value of <tt>foo</tt> becomes the <em>directory</em> in the target URL, the variable <tt>file</tt> is magically created, and the original query string is then tagged back onto the end of the whole thing..</p>
<blockquote>
<div id="more-complex-variable-capture" class="blockquote">
<div class="codetop">QSA Overkill!</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{QUERY_STRING} foo=(.+)</p>
<p>RewriteRule ^grab/(.*) /%1/index.php?file=$1 [QSA]</p></div>
</div>
</blockquote>
<p>So a request for..</p>
<p><tt>http://domain.com/grab/foobar.zip?level=5&#38;foo=bar</tt></p>
<p>is translated, server-side, into..</p>
<p><tt>http://domain.com/bar/index.php?file=foobar.zip&#38;level=5&#38;foo=bar</tt></p>
<p>Depending on your needs, you could even use flat links <em>and</em> dynamic variables together, something like this could be useful..</p>
<blockquote>
<div id="variable-capture-mix-flat-and-dynamic-links" class="blockquote">
<div class="codetop">mixing flat and dynamic links in a single ruleset..</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{QUERY_STRING} version=(.+)</p>
<p>RewriteRule ^grab/([^/]+)/(.*) /%1/index.php?section=$1&#38;file=$2 [QSA]</p></div>
</div>
</blockquote>
<p>By the way, you can easily do the <em>opposite</em>, strip a query string from a URL, by simply putting a <tt><strong>?</strong></tt> right at the end of the taget part. This example does exactly that, whilst leaving the actual URI intact..</p>
<blockquote>
<div id="strip-variables" class="blockquote">
<div class="codetop">just a demo!</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{QUERY_STRING} .</p>
<p>RewriteRule foo.php(.*) /foo.php<strong>?</strong> [L]</div>
</div>
</blockquote>
<p>The <tt>RewriteCond</tt> statement only allows requests that have <em>something</em> in their query string, to be processed by the <tt>RewriteRule</tt>, or else we'd end up in that hellish place, dread to all mod_rewriters.. the endless loop. <tt>RewriteCond</tt> is often used like this; as a safety-net.</div>
<div id="section-cooler_access_denied" class="small-space"></div>
<h3>cooler access denied</h3>
<div id="cooler-access-denied">
<p>In <a title="authentication, indexing, and more" href="htaccess.php#denied">part one</a> I<br />
demonstrated a drop-dead simple mechanism for denying access to particular files and folders. The trouble with<br />
this is the way our user gets a 403 "Access Denied" error, which is a bit like having a door slammed in your face.<br />
Fortunately, mod_rewrite comes to the rescue again and enables us to do less painful things. One method I often<br />
employ is to redirect the user to the parent folder..</p>
<blockquote>
<div id="rewrite-rule-cool-access-denied" class="blockquote">
<div class="codetop">they go "huh?.. ahhh!"</div>
<div class="codeblock"><span class="code-comment"># send them up!</span></p>
<p>Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^(.*)$ ../ [NC]</p></div>
</div>
</blockquote>
<p>It works great, though it can be a wee bit tricky with the URLs, and you may prefer to use a harder location, which avoids potential issues in indexed directories, where folks can get in a loop..</p>
<blockquote>
<div id="rewrite-rule-cooler-access-denied" class="blockquote">
<div class="codetop">they go damn! Oh!</div>
<div class="codeblock"><span class="code-comment"># send them exactly there!</span></p>
<p>Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^(.*)$ /comms/hardware/router/ [NC]</p></div>
</div>
</blockquote>
<p>Sometimes you'll only want to deny access to <em>most</em> of the files in the directory, but allow access to maybe one or two files, or file types, easy..</p>
<blockquote>
<div id="rewrite-rule-deny-with-style" class="blockquote">
<div class="codetop">deny with style!</div>
<div class="codeblock"><span class="code-comment"># users can load only "special.zip", and the css and js files.</span></p>
<p>Options +FollowSymlinks</p>
<p>RewriteEngine On</p>
<p>RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$</p>
<p>RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$</p>
<p>RewriteCond %{REQUEST_FILENAME} !special.zip$</p>
<p>RewriteRule ^(.+)$ /chat/ [NC]</p></div>
</div>
</blockquote>
<p>Here we take the whole thing a stage further. Users can access .css (stylesheet) and javascript files without problem, and also the file called "special.zip", but requests for any other filetypes are immediately redirected back up to the main "/chat/" directory. You can add as many types as you need. You could also bundle the filetypes into one line using &#124; (or) syntax, though individual lines are perhaps clearer.</p>
<p>Here's what's currently cooking inside my <tt>/inc/</tt> directory..</p>
<blockquote>
<div id="rewrite-rule-control-inc" class="blockquote">
<div class="codetop">all-in-one control..</div>
<div class="codeblock">RewriteEngine on</p>
<p>Options +FollowSymlinks</p>
<p><span class="code-comment"># allow access with no restrictions to local machine at 192.168.1.3</span></p>
<p>RewriteCond %{REMOTE_ADDR} !192.168.1.3</p>
<p><span class="code-comment"># allow access to all .css and .js in sub-directories..</span></p>
<p>RewriteCond %{REQUEST_URI} !\.css$</p>
<p>RewriteCond %{REQUEST_URI} !\.js$</p>
<p><span class="code-comment"># allow access to the files inside img/, but not a directory listing..</span></p>
<p>RewriteCond %{REQUEST_URI} !img/(.*)\.</p>
<p><span class="code-comment"># allow access to these particular files...</span></p>
<p>RewriteCond %{REQUEST_URI} !comments.php$</p>
<p>RewriteCond %{REQUEST_URI} !corzmail.php$</p>
<p>RewriteCond %{REQUEST_URI} !digitrack.php$</p>
<p>RewriteCond %{REQUEST_URI} !gd-verify.php$</p>
<p>RewriteCond %{REQUEST_URI} !post-dumper.php$</p>
<p>RewriteCond %{REQUEST_URI} !print.php$</p>
<p>RewriteCond %{REQUEST_URI} !source-dump.php$</p>
<p>RewriteCond %{REQUEST_URI} !textview.php$</p>
<p>RewriteRule ^(.*)$ / [R,nc,l]</p></div>
</div>
</blockquote>
</div>
<div id="section-prevent_hot-linking" class="small-space"></div>
<h3>prevent hot-linking</h3>
<div id="h0t71nKiN4_FuCkP1g5">
<p>Believe it or not, there are some webmasters who, rather than coming up with their own content will <em>steal</em> yours. Really! Even worse, they won't even bother to copy to their own server to serve it up, they'll just <strong>link to your content!</strong> no, it's true, in fact, it used to be incredibly common. These days most people like to prevent this sort of thing, and .htaccess is one of the best ways to do it.</p>
<p>This is one of those directives where the mileage variables are at their limits, but something like this works fine for me..</p>
<blockquote>
<div id="rewrite-rule-prevent-hot-linking" class="blockquote">
<div class="codetop">how DARE they!</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p><span class="code-comment"># no hot-linking</span></p>
<p>RewriteEngine On</p>
<p>RewriteCond %{HTTP_REFERER} !^$</p>
<p>RewriteCond %{HTTP_REFERER} !^http://(www\.)?corz\.org/ [NC]</p>
<p>RewriteRule .*\.(gif&#124;jpg&#124;png)$<br />
&#60;!--<br />
//&#60;![CDATA[<br />
&#60;!<br />
document.write("<a href="\">http://corz.org/img/hotlink.png  [NC]")<br />
//--&#62;<br />
// --&#62;<br />
// --&#62;<a title="this is what you get hot-linking to corz.org!" href="OpenWindow('/img/hotlink.png',233,20,370,200)">http://corz.org/img/hotlink.png</a> [NC]<br />
&#38;lt;/p&#38;gt; &#38;lt;div&#38;gt; &#38;lt;a href="/img/hotlink.png" mce_href="/img/hotlink.png" title="(opens in a new window - apple-click (shift-click on peecees) for a new tab instead)"&#38;gt;&#38;lt;br /&#38;gt; http://corz.org/img/hotlink.png&#38;lt;/a&#38;gt;  [NC]&#38;lt;br /&#38;gt; &#38;lt;/div&#38;gt; &#38;lt;p&#38;gt;</div>
</div>
</blockquote>
<p>You may see the last line broken into two, but it's all one line (all the directives on this page are). Let's have a wee look at what it does..</p>
<p>We begin by enabling the rewrite engine, as always.</p>
<p>The first <a title="'conditions', things to and match against the rewrite rule with deal with whatever requests these 'conditions' match">RewriteCond</a> line allows <em>direct</em> requests (not <em>from</em> other pages - an "empty referrer") to pass unmolested. The next line means; <em>if</em> the browser <em>did</em> send a referrer header, and the word "corz.org" is <em>not in the domain part of it</em>, then <em>DO</em> rewrite this request.</p>
<p>The all-important final <a title="the magic happens here. only requests that got through all the condition statements will be processed by the rule on this line.">RewriteRule</a> line instructs mod_rewrite to rewrite all matched requests (anything without "corz.org" in its referrer) asking for gifs, jpegs, or pngs, to an alternative image. Mine says "no hotlinking!" You can see it in action <a title="handy directory viewer, if the target webmaster is dumb" href="http://www.opendirviewer.nl/?url=http%3A%2F%2Fcorz.org%2Fpublic%2Fimages%2F&#38;submit=Go&#38;pagecount=20">here</a>.</p>
<p>There are loads of ways you can write this rule. google for "hot-link protection" and get a whole heap. Simple is best. You could send a wee message instead, or direct them to some evil script, or something. These days, mine is a simple <tt>corz.org</tt> logo, which <em>I</em> think is rather clever.</div>
<div id="section-lose_the_www" class="small-space"></div>
<h3>lose the "www"</h3>
<div id="NOWWW">
<p>I'm often asked how I prevent the "www" part showing up at my site, so I guess I should add something about that. Briefly, if someone types http://www.corz.org/ into their browser (or uses the www part for any link at corz.org) it is redirected to the plain, rather neat, http://corz.org/ version. This is <em>very</em> simple to achieve, like this..</p>
<blockquote>
<div id="rewrite-rule-no-www" class="blockquote">
<div class="codetop">beware the regular expression:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteCond %{http_host} ^www\.corz\.org [NC]</p>
<p>RewriteRule ^(.*)$ http://corz.org/$1 [R=301,NC]</p></div>
</div>
</blockquote>
<p>You don't need to be a genius to see what's going on here. There are other ways you could write this rule, but again, simple is best. Like most of the examples here, the above is pasted directly from my own main .htaccess file, so you can be sure it works perfectly. In fact, I recently updated it so that I could share rules between my dev mirror and live site without any .htaccess editing..</p>
<blockquote>
<div id="rewrite-rule-no-www-better" class="blockquote">
<div class="codetop">here's what I'm currently using:</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteCond %{HTTP_HOST}  ^www\.(.*) [NC]</p>
<p>RewriteRule ^(.*)$  http://%1/$1 [R=301,NC,L]</p></div>
</div>
</blockquote>
</div>
<div id="section-rewrite_sub-domains" class="small-space"></div>
<h3>multiple domains in one root</h3>
<div id="mod_rewrite-domains">
<p>If you are in the unfortunate position of having your sites living on a host that doesn't support multiple domains, you may be forced to roll your own with <tt>.htaccess</tt> and <tt>mod_rewrite</tt>. So long as your physical directory structure is well thought-out, this is fairly simple to achieve.</p>
<p>For example, let's say we have two domains, pointing at a single hosted root; <tt>domain-one.com</tt> and <tt>domain-two.com</tt>. In our web server root, we simply create a folder for each domain, perhaps <tt>one/</tt>, and <tt>two/</tt> then in our main (root) <tt>.htaccess</tt>, rewrite all incoming requests, like this..</p>
<blockquote>
<div class="blockquote">
<div class="codetop">All requests NOT already rewritten into these folders, transparently rewrite..</div>
<div class="codeblock"><code><span class="php-comment">#two domains served from one root..</span></p>
<p>RewriteCond %{HTTP_HOST} domain-one.com</p>
<p>RewriteCond %{REQUEST_URI} !^/one</p>
<p>RewriteRule ^(.*)$  one/$1 [L]</p>
<p>RewriteCond %{HTTP_HOST} domain-two.com</p>
<p>RewriteCond %{REQUEST_URI} !^two</p>
<p>RewriteRule ^(.*)$  two/$1 [L]</p>
<p></code></div>
</div>
</blockquote>
<p>All requests for the host <tt>domain-one.com</tt> are rewritten (not R=redirected) to the <tt>one/</tt> directory, so long as they haven't already been rewritten there (the second <tt>RewriteCond</tt>). Same story for <tt>domain-two.com</tt>. Note the inconsistency in the RewriteCond statement; <tt>!^/dir-name</tt> and <tt>!^dir-name</tt> should both work fine.</p>
<p>Also note, with such a simple domain &#38; folder naming scheme, you could easily merge these two rule sets together. This would be unlikely in the real world though, which is why I left them separate; but still, worth noting.</p>
<p>Other general settings and php directives can also go in this root <tt>.htaccess</tt> file, though if you have any further rewrite you'd like to perform; short URL's, htm to php conversion and what-not; it's probably easier and clearer to do those inside the sub-directory's .htaccess files.</div>
<div id="section-auto-translation" class="tiny-space"></div>
<h3>automatic translation</h3>
<div id="auto-translate">If you don't read English, or some of your guests don't, here's a neat way to have the wonderful Google translator provide automatic on-the-fly translation for your site's pages. Something like this..</p>
<blockquote>
<div id="rewrite-rule-auto-translation-ORIGINAL" class="blockquote">
<div class="codetop">they simply add their country code to the end of the link, or <em>you</em> do..</div>
<div class="codeblock">Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^(.*)-fr$  http://www.google.com/translate_c?hl=fr&#38;sl=en&#38;u=http://corz.org/$1 [R,NC]</p>
<p>RewriteRule ^(.*)-de$  http://www.google.com/translate_c?hl=de&#38;sl=en&#38;u=http://corz.org/$1 [R,NC]</p>
<p>RewriteRule ^(.*)-es$  http://www.google.com/translate_c?hl=es&#38;sl=en&#38;u=http://corz.org/$1 [R,NC]</p>
<p>RewriteRule ^(.*)-it$  http://www.google.com/translate_c?hl=it&#38;sl=en&#38;u=http://corz.org/$1 [R,NC]</p>
<p>RewriteRule ^(.*)-pt$  http://www.google.com/translate_c?hl=pt&#38;sl=en&#38;u=http://corz.org/$1 [R,NC]</p></div>
</div>
</blockquote>
<p>You can create your menu with its flags or whatever you like, and add the country code to end of the links.. <tt><a id="... &#60;/tt&#62; &#60;a id=" title="Automatic Translation courtesy of the ever-wonderful Google" rel="nofollow" href="page.html-fr">Want to see this page in French</a>?</p>
<p></tt></p>
<p><tt>Although it is very handy, and I've been using it here for a couple of years here at the org, for my international blog readers, all two of them, heh. Almost no one knows about it, mainly because I don't have any <em>links</em> . One day I'll probably do a wee toolbar with flags and what-not. Perhaps not. Trouble is, the Google translator stops translating after a certain amount of characters (which seems to be increasing, good), though these same rules could easily be applied to other translators, and if you find a good one, one that will translate a really <em>huge</em> document on-the-fly, do let me know!</p>
<p></tt></p>
<p><tt>If you wanted to be really clever, you could even perform some some kind of IP block check and present the correct version automatically, but that is outside the scope of this document. note: this may be undesirable for pages where technical commands are given (like this page) because the commands will also be translated. "RewriteEngine dessus" will almost certainly get you a 500 error page!</p>
<p></tt></div>
<div class="small-space"><tt> </tt></div>
<h3><tt>httpd.conf</tt></h3>
<div id="subfolderrulesok">
<p><tt>Remember, if you put these rules in the main server conf file (usually httpd.conf) rather than an .htaccess file, you'll need to use <strong>^/...</strong> ... instead of <strong>^...</strong> ... at the beginning of the RewriteRule line, in other words, add a slash.<br />
</tt></div>
<div id="section-inheritance" class="small-space"><tt> </tt></div>
<p><tt><br />
</tt></p>
<h3><tt>inheritance..</tt></h3>
<div id="inheritance">
<p><tt>If you are creating rules in sub-folders of your site, you need to read this.</p>
<p></tt></p>
<p><tt>You'll remember how rules in top folders apply to all the folders <em>inside</em> those folders too. we call this "inheritance". normally this just works. <strong>but</strong> if you start creating other rules inside subfolders you will, in effect, obliterate the rules already applying to that folder due to inheritance, or "decendancy", if you prefer. not <em>all</em> the rules, <em>just the ones applying to that subfolder</em>. a wee demonstration..</p>
<p></tt></p>
<p><tt>Let's say I have a rule in my main <code>/.htaccess</code> which redirected requests for files ending .htm to their .php equivalent, just like the example at the top of this very page. now, if for any reason I need to add some rewrite rules to my <code>/osx/.htaccess</code> file, the .htm &#62;&#62; .php redirection will no longer work for the <code>/osx/</code> subfolder, I'll need to reinsert it, <em>but with a <span style="color:#f81d00;">crucial</span> difference</em>..</p>
<p></tt></p>
<blockquote>
<div id="rewrite-rule-inheritance-cascading" class="blockquote">
<div class="codetop"><tt>this works fine, site-wide, in my main .htaccess file </tt></div>
<div class="codeblock"><span class="code-comment"><tt># main (top-level) .htaccess file..</tt></span><tt></p>
<p><span class="code-comment"># requests to file.htm goto file.php</span></p>
<p>Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule ^(.*)\.htm$ http://corz.org/$1.php [R=301,NC]<br />
</tt></div>
</div>
</blockquote>
<p><tt><br />
</tt></p>
<p><tt>Here's my updated <code>/osx/.htaccess</code> file, with the .htm &#62;&#62; .php redirection rule reinserted..</p>
<p></tt></p>
<blockquote>
<div id="rewrite-rule-subfolder-rules" class="blockquote">
<div class="codetop"><tt>but I'll need to reinsert the rules for it to work in this sub-folder </tt></div>
<div class="codeblock"><span class="code-comment"><tt># /osx/.htaccess file..</tt></span><tt></p>
<p>Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p>RewriteRule some rule that I need here</p>
<p>RewriteRule some other rule I need here</p>
<p>RewriteRule ^(.*)\.htm$ http://corz.org/<span style="color:#f81d00;">osx/</span>$1.php [R=301,NC]<br />
</tt></div>
</div>
</blockquote>
<p><tt><br />
</tt></p>
<p><tt>Spot the difference in the subfolder rule, highlighted in <span style="color:#f81d00;">red</span>. you <strong>must</strong> add the current path to the new rule. now it works again, and all the osx/ subfolders will be covered by the new rule. if you remember this, you can go replicating rewrite rules all over the place.</p>
<p></tt></p>
<p><tt>If it's possible to put your entire site's rewrite rules into the main .htaccess file, and it probably is; do that, instead, like this..</p>
<p></tt></p>
<blockquote>
<div id="rewrite-rule-all-in-one" class="blockquote">
<div class="codetop"><tt>it's a good idea to put all your rules in your main .htaccess file.. </tt></div>
<div class="codeblock"><span class="code-comment"><tt># root /.htaccess file..</tt></span><tt></p>
<p>Options +FollowSymlinks</p>
<p>RewriteEngine on</p>
<p><span class="code-comment"># .htm &#62;&#62; .php is now be covered by our main rule, there's no need to repeat it. </span></p>
<p><span class="code-comment"># But if we do need some /osx/-specific rule, we can do something like this..</span></p>
<p>RewriteRule ^<span style="color:#f81d00;">osx/</span>(.*)\.foo$ <a title="normally, there's no need to specify the full URL.">/</a><span style="color:#f81d00;">osx/</span>$1.bar [R=301,NC]<br />
</tt></div>
</div>
</blockquote>
<p><tt><br />
</tt></p>
<p><tt>Note, no full URL (with domain) in the second example. Don't let this throw you; with or without is functionally identical, on <em>most</em> servers. Essentially, try it without the full URL first, and if that doesn't work, sigh, and add it - maybe on your next host!</p>
<p></tt></p>
<p><tt>The latter, simpler form is preferable, if only for its tremendous portability it offers - my live site, and my development mirror share the exact same .htaccess files - a highly desirable thing.</p>
<p></tt></p>
<p><tt>By the way, it perhaps doesn't go without saying that if you want to <em>disable</em> rewriting inside a particular subfolder, where it is <em>enabled</em> further up the tree, simply do:</p>
<p></tt></p>
<blockquote>
<div id="rewrite-rule-disable-rewriting-in-here" class="blockquote">
<div class="codetop"><tt>handy for avatar folders, to allow hot-linking, etc.. </tt></div>
<div class="codeblock"><tt>RewriteEngine <a id="mod_rewrite_OFF" title="using 'on', would also work, but with a slight performance penalty. Also, it's  silly.">off</a> </tt></div>
</div>
</blockquote>
</div>
<div id="section-conclusion" class="small-space"><tt> </tt></div>
<p><tt><br />
</tt></p>
<h3><tt>conclusion</tt></h3>
<div id="summinup">
<p><tt>In short, mod_rewrite allows you to send browsers <em>from</em> anywhere <em>to anywhere</em>. You can create rules based not simply on the requested URL, but also on such things as IP address, browser agent (send old browsers to different pages, for instance), and even the time of day; the possibilities are practically limitless.</p>
<p></tt></p>
<p><tt>The ins-and outs of mod_rewrite syntax are topic for a <em>much</em> longer document than this, and if you fancy experimenting with more advanced rewriting rules, I urge you to check out the apache documentation.</p>
<p></tt></p>
<p><tt>If you have apache installed on your system, there will likely be a copy of the apache manual, <a title="oh what a clever puter you've got! (opens in a new window - apple-click (shift-click on peecees) for a new tab instead)" href="http://localhost/manual/">right here</a>, and the excellent mod_rewriting guide, <a title="aye, there's loads of stuff like this hidden in yer puter! (opens in a new window - apple-click (shift-click on peecees) for a new tab instead)" href="http://localhost/manual/misc/rewriteguide.html">lives right here</a>. do check out the <a title="the syntax stuff lives here (opens in a new window - apple/shift-click for a new tab/window)" href="http://localhost/manual/mod/mod_rewrite.html">URL Rewriting Engine notes</a> for the juicy syntax bits. That's where I got the cute quote for the top of the page, too.<br />
</tt></div>
<div class="small-space"><tt> </tt></div>
<div id="ceeya"><tt>;o)</p>
<p><a href="mailto:corz@corz.org?subject=htaccess2.php">(or</a><br />
</tt></div>
<div class="quarter-space"><tt> </tt></div>
<div id="section-troubleshooting" class="tiny-space"><tt> </tt></div>
<p><tt><br />
</tt></p>
<h3><tt>troubleshooting tips..</tt></h3>
<div id="troubleshooting">
<h4><tt>rewrite logging..</tt></h4>
<p><tt>When things aren't working, you may want to enable rewrite logging. I'll assume you are testing these mod_rewrite directives on your development mirror, or similar setup, and can access the main <tt>httpd.conf</tt> file. If not, <em>why not?</em> Testing <tt>mod_rewrite</tt> rules on your live domain isn't exactly ideal, is it? Anyway, put this somewhere at the foot of your <tt>http.conf</tt>..</p>
<p></tt></p>
<blockquote>
<div id="rewrite-rule-logging" class="blockquote">
<div class="codetop"><tt>Expect large log files.. </tt></div>
<div class="codeblock"><span class="code-comment"><tt>#</tt></span><tt></p>
<p><span class="code-comment"># ONLY FOR TESTING REWRITE RULES!!!!!</span></p>
<p><span class="code-comment">#</span></p>
<p>RewriteLog "/tmp/rewrite.log"</p>
<p><span class="code-comment">#RewriteLogLevel 9</span></p>
<p>RewriteLogLevel 5<br />
</tt></div>
</div>
</blockquote>
<p><tt><br />
</tt></p>
<p><tt>Set the file location and logging level to suit your own requirements.</tt></p>
<p><tt>If your rule is causing your Apache to loop, load the page, immediately hit your browser's "STOP" button, and then restart Apache. All within a couple of seconds. Your rewrite log will be full of all your diagnostic information, and your server will carry on as before.</p>
<p>Setting a value of 1 gets you almost no information, setting the log level to 9 gets you GIGABYTES!  So you <strong>must</strong> remember to comment out these rules and restart Apache when you are finished because, not only will rewrite logging create space-eating files, it will seriously impact your web server's performance.</p>
<p></tt></p>
<p><tt><tt>RewriteLogLevel 5</tt> is very useful, I find.</p>
<p></tt></p>
<h4><tt>Fatal Redirection</tt></h4>
<p><tt>If you start messing around with 301 redirects [R=301], aka. "Permanently Redirected", and your rule isn't working, you could give yourself some serious headaches..</p>
<p></tt></p>
<p><tt>Once the browser has been redirected <em>permanently</em> to the wrong address, if you then go on to alter the wonky rule, your browser will <em>still</em> be redirected to the old address (because it's a browser thing), and you may even go on to fix, <em>and then break</em> the rule all over again without ever knowing it. Changes to 301 redirects can take a long time to show up in your browser.</p>
<p></tt></p>
<p><tt><strong>Solution</strong>: restart your browser, or use a different one.</p>
<p></tt></p>
<p><tt><strong>Better Solution</strong>: Use [R] instead of [R=301] <em>while you are testing</em> . When you are 100% certain the rule does exactly as it's expected to, <em>then</em> switch it to [R=301] for your live site.<br />
</tt></p>
<div id="section-debug-report.php" class="tiny-space"><tt> </tt></div>
<p><tt><br />
</tt></p>
<h4><tt><big><tt>debug-report.php</tt></big></p>
<p>A php script to make your mod_rewrite life easier!</tt></h4>
<p><tt>When things aren't working as you would expect, you probably won't have to enable rewrite logging to get the information you need. What's usually required is no more than a quick readout of all the current variables, <tt>$_GET</tt> array, and so on; so you can see <em>exactly</em> what happened to the request.</p>
<p></tt></p>
<p><tt>For another purpose, I long ago created <tt>debug.php</tt>, and later, finding all this information useful in chasing down wonky rewrites, created a "report" version, which rather than output to a file, spits the information straight back into your browser, as well as <tt>$_POST</tt>, <tt>$_SESSION</tt>, and <tt>$_SERVER</tt> arrays, special variables, like <tt>__FILE__</tt>, and much more.</p>
<p></tt></p>
<p><tt>Usage is simple; you make it your <em>target page</em>, so in a rule like this..</p>
<p></tt></p>
<blockquote>
<div id="test-your-rules-with-debug-report-php" class="blockquote">
<div class="codeblock"><tt>RewriteRule ^(.*)\.html$ /catch-all.php?var=$1<br />
</tt></div>
</div>
</blockquote>
<p><tt><br />
</tt></div>
<div><tt>Posted By: <a href="http://www.expertzweb.com">ExpertzWeb</a></tt></div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[ricky king:apache]]></title>
<link>http://myobama.wordpress.com/?p=173</link>
<pubDate>Sun, 12 Oct 2008 14:41:20 +0000</pubDate>
<dc:creator>newsusa</dc:creator>
<guid>http://myobama.ro.wordpress.com/2008/10/12/ricky-kingapache/</guid>
<description><![CDATA[
]]></description>
<content:encoded><![CDATA[<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/tbx1tMIOjcM'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/tbx1tMIOjcM&rel=0' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed></object></span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Sunrise Ceremony (Dance) - Apache']]></title>
<link>http://myobama.wordpress.com/?p=169</link>
<pubDate>Sun, 12 Oct 2008 14:36:13 +0000</pubDate>
<dc:creator>newsusa</dc:creator>
<guid>http://myobama.ro.wordpress.com/2008/10/12/sunrise-ceremony-dance-apache/</guid>
<description><![CDATA[
]]></description>
<content:encoded><![CDATA[<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/AimSHqCq0Go'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/AimSHqCq0Go&rel=0' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed></object></span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Kansas: Cheyenne Anthem]]></title>
<link>http://myobama.wordpress.com/?p=167</link>
<pubDate>Sun, 12 Oct 2008 14:33:41 +0000</pubDate>
<dc:creator>newsusa</dc:creator>
<guid>http://myobama.ro.wordpress.com/2008/10/12/kansas-cheyenne-anthem/</guid>
<description><![CDATA[
]]></description>
<content:encoded><![CDATA[<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/yASrfwkunm8'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/yASrfwkunm8&rel=0' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed></object></span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Getting started with WordPress]]></title>
<link>http://lithiumblog.wordpress.com/?p=5</link>
<pubDate>Sun, 12 Oct 2008 14:06:11 +0000</pubDate>
<dc:creator>Lithium</dc:creator>
<guid>http://lithiumblog.ro.wordpress.com/2008/10/12/5/</guid>
<description><![CDATA[So here I am with a nice new WordPress.com Blog, after browsing the themes available for a good whil]]></description>
<content:encoded><![CDATA[<p>So here I am with a nice new WordPress.com Blog, after browsing the themes available for a good while I settled on Hemingway because of it's simplicity and clean look, but who knows, by the time you read this I may have altered the theme. That Chaotic theme was looking quite nice... and is looking repeatedly nicer each time I browse the Design section of my Dashboard.</p>
<p>So what's happening at the moment?</p>
<p>I've been doing programming on the web for quite awhile, and although my PHP and CSS knowledge isn't the best at the moment, I'm hoping to improve both. After browsing many of the cool WordPress themes such as <a title="Agregado - A Free WordPress Theme" href="http://www.smashingmagazine.com/2008/09/08/agregado-a-free-wordpress-theme/" target="_blank">Agregado</a>, by <a title="Agregado Lifestream Theme for WordPress Released - Darren Hoyt Dot Com" href="http://www.darrenhoyt.com/2008/09/08/agregado-lifestream-theme-for-wordpress-released/" target="_blank">Darren Hoyt</a> and <a title="Matt Dawson - The Nested Float" href="http://www.thenestedfloat.com/articles/introducing-agregado-a-free-wordpress-theme-with-lifestream/" target="_blank">Matt Dawson</a> which in my oppinion is one of the most beautiful looking WordPress themes around at the moment ( Seriously I can't convey how nice that theme is), I was left thinking <em>"Hmm, why can't I do something that cool"</em>, so I decided to learn how to make a WordPress theme myself starting from one of the initial ideas I mocked up.</p>
[caption id="attachment_7" align="aligncenter" width="240" caption="Initial Idea"]<a href="http://lithiumblog.files.wordpress.com/2008/10/initialidea1.jpg"><img class="size-medium wp-image-7" title="Initial Idea" src="http://lithiumblog.wordpress.com/files/2008/10/initialidea1.jpg?w=300" alt="Initial Idea" width="240" height="240" /></a>[/caption]
<p>I'm not completly satisfied with it the mockup itself, but I think it has a nice feel to it.</p>
<p>Setting up WordPress with my XAMPP server was a piece of cake, but when I enabled name based permalinks I found none of the links on my test blog worked at all. After having a look around I found out XAMPP has Mod_Rewrite disabled by default, so a quick trip to the http.conf file and I had meaningful permanlinks enabled.</p>
<p>The intial forays into the index.php file were filled with the deep confusing that can only come from seeing all of the little pieces of PHP inbetween the html for the first time. Confusing as they were I persevered and after a trip to the friendly google search engine I found the wonderful site <a title="WPDesigner" href="http://www.wpdesigner.com/" target="_blank">WPDesigner</a>. As well being a site containing many nice looking WordPress themes and tutorials, one particular thing stood out to me, the 16 step tutorial entitled <a title="WPDesigner - So you want to make WordPress themes huh?" href="http://www.wpdesigner.com/2007/02/19/so-you-want-to-create-wordpress-themes-huh/" target="_blank">"So you want to make WordPress themes huh?"</a>. It's more than just good it's great, I've already been through it once and it provides a good basis from which to develop your theme. With it's aid and a few trips to the blog design and layout section of the <a title="WordPress Codex" href="http://codex.wordpress.org/Main_Page" target="_blank">WordPress codex</a>, I've begun to try and take my initial idea above and make it into a theme.</p>
<p>I'll update this blog with how the theme's progressing, but for now theres quite a bit of PHP for me todo. If you have any links which you feel might help me in my task feel free to leave them in my comments.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[CODENAME: ASERO]]></title>
<link>http://anakngalak.wordpress.com/?p=51</link>
<pubDate>Sun, 12 Oct 2008 01:32:17 +0000</pubDate>
<dc:creator>anakngalak</dc:creator>
<guid>http://anakngalak.ro.wordpress.com/2008/10/12/codename-asero/</guid>
<description><![CDATA[Ang saya na sana ng aking gabi ngayon, naspoiled lang. Kung bakit naspoiled? Hindi ko na babanggitin]]></description>
<content:encoded><![CDATA[<p>Ang saya na sana ng aking gabi ngayon, naspoiled lang. Kung bakit naspoiled? Hindi ko na babanggitin. Gusto mo ng clue? Sige ito: "RONREG".</p>
<p>Ang ganda ng sked ko ngayon sa pagbabarik, may usapan kasi kame nina jules at junior na titiranin namin ang lambanog na bigay samin ni sir meric. Yung isang wilkins na lambanog na kalahati pa lang ang nadadale namin ay dinagdagan pa ng dalawang wilkins, isang puro at isang may mga nakababad na ayon kay junior ay mga pinira-pirasong daga. Putek, lalaway-laway ako kapag nakikita ko ang mga wilkins na ito. Ang sarap simutin. Parang susu(yung hayop na may shell ha) na ang sarap higupin, parang MAX, kilig to da bone.</p>
<p>Nagsimula ang araw ko ngayon ng pinagsamang eksaytment at saya.</p>
<p>Eksaytment sa pagharap sa aking ubuntu na pilit kong pinapagana ang apache para ma-access sa loob ng aming network. Binuksan ko na ang aking firewall, naka-allow all na ang access sa setup ng aking apache, aba't ayaw paring gumana, buset, kanina ko lang nalaman na baka ang dahilan eh ang SELinux, buti na lang at nakatabi ko si sir meric sa upuan sa aming barikan sa metro walk kaya nalaman ko ito. Pagkausap mo kasi si sir meric eh para kang naggogoogle ng walang internet. Isa  siya sa mga woking, toking, bariking(nagbabarik) na ensayklopedya. Nakadunggit na naman ako ng munting kaalaman dahil sa aking masusing pakikipagbarikan. Ayus.</p>
<p>Eksaytment dahil magbabarik na naman kame nina jules at junior. Sayang at isa na lang ang kulang sa F4, may nang-indyan kasi, naging pintor na naman (sino kaya yun? Drawing). Nga pala, hindi ko pa nababanggit ang guru ng F4. Relaks lang kayo ha, mamaya eh ipapasilip ko rin sa inyo ang kanyang propayl. Hehehe.</p>
<p>Saya dahil wala ng bukas sa support na naka-assign sa akin. Ayos at makakapag-konsintiret naman ako sa ibang mga nakabinbing project na kaylangan ng tulong ng kapangyarihan ng anak ng alak, eh hindi pala, ni henyo pala. Sa barikan lang si anak ng alak.</p>
<p>Pero buset, maayos na sana ang lahat. Tumatakbo ang mga pangyayari na masaya, ngunit sa hindi inaasahang pagkakataon eh bigla na lang nabulabog ang aming munting kasiyahan dahil naging “KJ” ako. Pagkatapos kasi namin sa metro walk eh ang plano'y balik na lang kame sa bahay para tiranin ang lambanog namin na pinapasarap sa panahon, ngunit may nagrekuwes na makipag-barikan sa amin, kaya ayun at pinaunlakan namin ang kanilang imbetasyon, baka saabihin naman eh suplado pala kame sa personal samantalang sa radyo eh kaway ng kaway. Mahirap talaga sa shubez. At nagrekuwes pa sila na kung pwede eh samahan ko pa sila sa sasakyan nila, grabeh, masyado talaga ngayong demanding ang mga fans. Pero dahil sa likas akong mabuting lasenggo eh pinagbigyan ko sila. Nagpahatid ang kasama ko sa bahay at ako nama'y bumaba muna rin para tanggalin ang bigat ng aking pantog. Ngunit dala ng mapaglaro at talanding panahon eh hindi na ako nakalabas pa uli ng bahay. Hindi na ako na kasama sa kanila, sa pagpunta sa TEN-O-TWO. Kung bakit? Nagbigay na ako ng clue sa itaas, ayaw kung inuulit ang sinasabi ko, may bayad na iyon.</p>
<p>Habang ako'y tulala sa aking pagmumuni-muni eh naisipan kong laklakin na ang lambanog na pakalat-kalat dito sa salas ng bahay. Naisip kong ubusin ang laman ng isang wilkins ngunit naisip kong hindi pwede, baka magalet sakin ang tropang F4 dahil inubusan ko sila at isa pa eh may shuting pa kame bukas para sa CODENAME: ASERO (oo, ako nga si CODENAME:ASERO, hindi na ako si PIOLO) na pinagbibidahan ko, baka malayt ako, siguradong yari na naman ako kay direk. Kaya ito, barik na lang akong mag-isa ng lambanog. Pampalamig sa aking ulong nag-iinit habang hinihimas ang aking tenga na nagpapanting pa hanggang ngayon. Hindi pala ako nag-iisa dito, kabarikan ko ang aking konsensya. Ayus ding kabarikan, minsan lang eh nakakaasar dahil sobrang “KJ”. Nagagalit nga sakin ngayon sa kadahilanang ba't daw ako pindot ng pindot dito sa laptop eh nagbabarik pa kame, sabi ko, binablog ko siya, aba't nagalit lalo, ayaw daw maekspos siya sa shubez, wag na daw. Hayy naku, KJ talaga. Binantaan pa ko na bubuhusan nya daw ng lambanog ang laptop ko pag hindi ako tumigil. Aba! Guluhin mo na buhay ko wag lang ang laptop ko! Maghahalo ang tinalupan sa balat. Ober may ded and gordyos badi! Pero oki, pagbibigyan ko siya, ako na rin naman ang sashat eh, sayang baka malampasan pa ko ng tagay. Ika ko nga kay junior, "magtagal na sa kung ano wag lang sa basito".</p>
<p>O! Shat shat shat!</p>
<p>Ito nga pala ang promis ko, ang F4 Guru:</p>
<p>Pulang Mata:<br />
Alias: pulangmata<br />
vital statistics:  ayaw-pa-banggit<br />
packs: 3 and counting....<br />
height: 5'6<br />
interested: laptop, linux at linux at linux<br />
Mas gusto: Beer(sanmig lights, redhorse)<br />
Miscelaneous: ayaw-ring-pa-banggit</p>
<p>PS: pa-misteryos epek ang aming guru kaya sori, ito lang ang kaya kung ibigay na inpo</p>
<p>Sa susunod eh yung mga die hard pans naman ng F4. Silang namumuno sa "F4 Pans Klub". Wag kayong mainip, malapit na, abangan.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Point bilan]]></title>
<link>http://lookinaround.wordpress.com/?p=587</link>
<pubDate>Sat, 11 Oct 2008 22:24:11 +0000</pubDate>
<dc:creator>lookinaround</dc:creator>
<guid>http://lookinaround.ro.wordpress.com/2008/10/12/point-bilan/</guid>
<description><![CDATA[Alors, pour Apache, c&#8217;est bon, j&#8217;avais un problème avec MySQL qui est aussi réglé, ç]]></description>
<content:encoded><![CDATA[<p>Alors, pour Apache, c'est bon, j'avais un problème avec MySQL qui est aussi réglé, ça à l'air de bien fonctionner dans l'ensemble, prochaine étape, l'installation d'un serveur de messagerie ( POP et SMTP ).</p>
<p>Pour ce que y est de mon avenir, pour l'instant ça s'annonce pas trop mal d'enfin bon ne crions pas victoire trop tôt.</p>
<p>J'ai passé mon module "Perte d'adhérence" aujourd'hui, plus que quelques leçons de conduite ( en rab n'est-ce pas :D ) et d'ici le début du mois prochain j'aurais peut être le fameux papier rose.</p>
<p>A cet instant j'ai celle que j'aime et qui me motive à mes côtés alors tout va bien, j'ai envie de tout, besoin de rien. :) Et c'est tant mieux.</p>
<p><em>Je t'aime</em>.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[ù.ù apache sul portatile crasha]]></title>
<link>http://circu.wordpress.com/?p=80</link>
<pubDate>Sat, 11 Oct 2008 21:35:38 +0000</pubDate>
<dc:creator>circu</dc:creator>
<guid>http://circu.ro.wordpress.com/2008/10/11/uu-apache-sul-portatile-crasha/</guid>
<description><![CDATA[sarò imbranato io ma dall&#8217;altro ieri apache non mi riconosce più i file php O.o&#8230;..ades]]></description>
<content:encoded><![CDATA[<p>sarò imbranato io ma dall'altro ieri apache non mi riconosce più i file php O.o.....adesso ho reinstallato, e dopo vari smadonnamenti ora va tutto abbastanza bene, non ho ancora testato bene tutto. Adesso ho anche installato una debian sul fisso scattone, che ben presto diventerà server palestra e che forse userò per emergenze XD.....</p>
<p>aggiornamento sul lavoro per il cms per i gdr: stò facendo le bacheche, ancora quelle,meteo e amminsitrazione di tutto e forse ho finito =_= insomma va a rilento...</p>
<p>vabbeh, erano gli ultimi aggiornamenti, ci vediamo</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Nice Charts with Trinidad]]></title>
<link>http://matthiaswessendorf.wordpress.com/?p=134</link>
<pubDate>Sat, 11 Oct 2008 15:18:58 +0000</pubDate>
<dc:creator>matthiaswessendorf</dc:creator>
<guid>http://matthiaswessendorf.ro.wordpress.com/2008/10/11/nice-charts-with-trinidad/</guid>
<description><![CDATA[Apache MyFaces Trinidad provides a lot of cool JSF components; a really nice one it the chart compon]]></description>
<content:encoded><![CDATA[<p>Apache MyFaces Trinidad provides a lot of cool JSF components; a really nice one it the <a href="http://myfaces.apache.org/trinidad/trinidad-api/tagdoc/tr_chart.html">chart component</a>. It offers several possibilities to visualize your structured data. Like this pie chart:</p>
<p><a href="http://matthiaswessendorf.files.wordpress.com/2008/10/chart_model_blog.png"><img class="alignnone size-full wp-image-133" title="chart_model_blog" src="http://matthiaswessendorf.wordpress.com/files/2008/10/chart_model_blog.png" alt="" width="437" height="316" /></a></p>
<p>To actual provide such a nice looking chart graphic, you just need to implement an abstract class, provided by <a href="http://myfaces.apache.org/trinidad/trinidad-1_2/trinidad-api/apidocs/org/apache/myfaces/trinidad/model/ChartModel.html">Trinidad's API</a>. This may sound a bit complicated... but actually it is straightforward:</p>
<p>[sourcecode language="java"]<br />
public class CustomerDevelopment extends ChartModel<br />
{<br />
  public List<String> getGroupLabels()<br />
  {<br />
    List<String> years = new ArrayList<String>();<br />
    years.add("2006");<br />
    years.add("2007");<br />
    years.add("2008");<br />
    years.add("2008");<br />
    return years;<br />
  }<br />
  public List<String> getSeriesLabels()<br />
  {<br />
    List<String> products = new ArrayList<String>();<br />
    products.add("Product A");<br />
    products.add("Product B");<br />
    return products;<br />
  }<br />
  public List<List<Double>> getYValues()<br />
  {<br />
    List<List<Double>> chartValues = new ArrayList<List<Double>>();<br />
    // iterate over the groups (years...)<br />
    for(int i = 0; i < getGroupLabels().size(); i++)<br />
    {<br />
      List<Double> numbers = new ArrayList<Double>();</p>
<p>      // now, just read the series, per group (product/year)<br />
      for(int j = 0; j < getSeriesLabels().size(); j++)<br />
      {<br />
        // yes... some random stuff here, in the demo ...<br />
        numbers.add(10000 * Math.random());<br />
      }<br />
      chartValues.add(numbers);<br />
    }<br />
    return chartValues;<br />
  }</p>
<p>}<br />
[/sourcecode]<br />
Actually, the only "tricky" part is the getYValues() method. Here you do two loops to get the correct data. When you are already in the business of providing chart data... this is somewhat familiar.</p>
<p>The JSPX (or Facelet) is also very simple:</p>
<p>[sourcecode language="html"]</p>
<tr:chart value="#{bean.chartModel}" type="pie" />
[/sourcecode]<br />
There are actually more than 10 different types of rendering the chart, take a look at the tagdoc.</p>
<p>Have fun!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[EasyPhp 2.01b errore mysql : http://127.0.0.1/mysql/ not found - Come risolvere il problema ]]></title>
<link>http://orion42.wordpress.com/?p=54</link>
<pubDate>Sat, 11 Oct 2008 14:08:20 +0000</pubDate>
<dc:creator>orion42</dc:creator>
<guid>http://orion42.ro.wordpress.com/2008/10/11/easyphp-201b-errore-mysql-http127001mysql-not-found-come-risolvere-il-problema/</guid>
<description><![CDATA[Oggi ho installato EasyPhp 2.01b sul mio nuovo fisso, ma non riuscivo ad accedere a PhpMyAdmin dal m]]></description>
<content:encoded><![CDATA[<p>Oggi ho installato EasyPhp 2.01b sul mio nuovo fisso, ma non riuscivo ad accedere a PhpMyAdmin dal menù del programma; così ho fatto un po' di ricerche su internet ed ho trovato la soluzione.<br />
Il programma cerca la directory</p>
<blockquote><p><strong>http://127.0.0.1/mysql/</strong></p></blockquote>
<p>ma non la trova, dando l'errore:</p>
<blockquote>
<h2><strong>Not Found</strong></h2>
<p><strong>The requested URL /mysql/ was not found on this server.</strong></p></blockquote>
<p>poiché in realtà l'<strong>url esatto</strong> che dovrebbe essere impostato nei files di configurazione sarebbe :</p>
<blockquote><p><strong>http://127.0.0.1/home/mysql/</strong></p></blockquote>
<p><strong>Per risolvere il problema basta inserire un alias di redirect nel file di configurazione di Apache.</strong></p>
<p>Ecco come fare:</p>
<p>Apri risorse del computer ed entra nella cartella dove hai installato EasyPhp (io l'ho installato in d:/EasyPHP , ma potrebbe essere una qualsiasi directory del tuo hard disk, di solito C:/Programmi/EasyPhp 2.01b/)<br />
entrare nella cartella <strong>apache</strong> e poi in <strong>conf</strong> ( nel mio caso:  <strong>D:\EasyPHP\apache\conf</strong>), da qui aprire il file<br />
<strong>httpd.conf</strong> (se nn hai abilitato la visualizzazione delle estensioni vedrai solo il nome del file: <strong>httpd</strong> ).</p>
<p>Ora puoi aprire il file <strong>httpd.conf</strong> ; se ti chiede con che cosa aprirlo segli l'opzione "seleziona <strong>u</strong>n programma dall'elenco", e poi scegli <strong>Blocco Note</strong> ( o <strong>Notepad</strong>). Clicca sul menù modifica , poi su cerca e inserisci la stringa da cercare nel testo: "<strong>Alias /home/mysql</strong>" Giungerai così a circa un terzo del documento alla linea :</p>
<blockquote><p><strong>Alias /home/mysql "d:/EasyPHP/phpmyadmin"</strong></p></blockquote>
<p>Tutto ciò che devi fare per risolvere il problema è <strong>aggiungere una nuova linea sotto la precedente </strong>contenente :</p>
<blockquote><p><strong>Alias /mysql "d:/EasyPHP/phpmyadmin"</strong></p></blockquote>
<p>cosi da avere nel testo le due righe vicine :</p>
<blockquote><p><strong> Alias /home/mysql "d:/EasyPHP/phpmyadmin"<br />
Alias /mysql "d:/EasyPHP/phpmyadmin" </strong></p></blockquote>
<p>Ovviamente al posto di <strong>d:/EasyPHP voi avrete la vostra directory in cui avete installato EasyPhp.<br />
</strong></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Lakota Domestic Violence Fighter Tillie Black Bear: Indigenous men must respect all women even in thought]]></title>
<link>http://turtleislandproject.wordpress.com/2008/10/10/lakota-domestic-violence-fighter-tillie-black-bear-indigenous-men-must-respect-all-women-even-in-thought/</link>
<pubDate>Fri, 10 Oct 2008 19:26:13 +0000</pubDate>
<dc:creator>yoopernewsman</dc:creator>
<guid>http://turtleislandproject.ro.wordpress.com/2008/10/10/lakota-domestic-violence-fighter-tillie-black-bear-indigenous-men-must-respect-all-women-even-in-thought/</guid>
<description><![CDATA[					


This is a transcript of the second in a series of videos about Tillie Black Bear - the execu]]></description>
<content:encoded><![CDATA[<p>					[blip.tv ?posts_id=1351249&#38;dest=37444]
<div class="blip_description">
<p><img alt="" src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08013.jpg" width="384" /></p>
<p><strong>This is a transcript of the second in a series of videos about Tillie Black Bear - the executive director and one of the founders of the White Buffalo Calf Woman Society (WBCWS).</strong></p>
<p>For 31 years, the WBCWS has served the Lakota Sioux Rosebud Reservation in Mission, SD.</p>
<p>Black Bear spoke to the Northern Michigan University 2008 Uniting Neighbors in the Experience of Diversity (UNITED) Conference on September 23, 2008.</p>
<p>This is the second of several videos about her talk in the Great Lakes Room of the NMU University center and informal discussion that followed.<br /><strong><br />Tillie Black Bear:</strong></p>
<p><img alt="" src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08011.jpg" width="405" /></p>
<p><strong>&#34;When we look at who we are as woman. We really have to look at where we come from as woman.&#34;</p>
<p>I always encourage women from other tribes to take a look at where they were before - pre-European contact. What belonged to women</p>
<p>Tribal women, we had rights. We owned property. We had our children with us. Our children belonged to the women.</p>
<p>With the impact of colonization, those rights were skewed.<br />Because we had our white sisters coming from Europe who were the property of the men. And the children were the property of men, as well.</p>
<p>So you had this group of people coming and interfacing with tribal women all across Turtle I sland. Whether it was the eastern coast or the western coast. And what they found there was (tribal) women who owned property.</p>
<p>What was written about tribal women by the explorers, the priests, by the churches was they depicted this image of  - if you close you eyes and imagine whats your image of an Indian woman - we were portrayed as we had this thing on our back and we were towing something. We had like wood or we were towing something somewhere. Or else either that we were standing by a big black pot cooking.&#34;</strong></p>
<p><img alt="" src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08026.jpg" width="400" /></p>
<p><strong>&#34;If you could do a paradigm shift to that idea - that the woman who had that stuff on her back - that was her property. It was what she owned. And she was carrying it somewhere.<br />That big black pot belonged to her.</p>
<p>In our culture as Lakota Sioux women - the teepee that we had was the womens domain. It was our teepee. And what went on inside that teepee was our responsibility.</p>
<p>Today we are real fortunate as tribal women that we dont have to set up those big 16-foot teepees anymore. Our brothers, our male relatives are the ones who learn how to set up for us the three poles and then bringing in the next poles until you have 12 poles that are standing up.</p>
<p>Our brothers do that today so we have been ind of spoiled as women because we dont have to do this anymore. In our tribe, can you imagine women - they would have contests to see how fast women could put up these teepees.</p>
<p>Within our tribe there might be two or three sets of women who could do it (now). I certainly couldnt do it and not have my brothers there, my males relatives, to come and help me.</p>
<p>Tribal women were responsible for that task. She owned that. It belonged to her.</p>
<p>If you look at who you are today as a women, what are the rights that you have, especially our white sisters, where did that come from?</strong></p>
<p><img alt="" src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08024.jpg" width="400" /></p>
<p><strong>About 20 years ago feminist historians began to have the eyes to see where suffrages like Matilda Joslyn Gage, Susan B. Anthony - where they got their ideas from about womens equality. It was from the Iroquois  nation because a majority of those suffrages women have been adopted by the clan mothers.</strong></p>
<p><strong>&#34;So they began to get their ideas about womens rights and they adopted many of their ideas about womens equality from those clan sisters from the Iroquois Nation.</p>
<p>So when we work today for equality for women, I work for tribal women to reclaim that equality that existed for us prior to colonization.</p>
<p>For our white sisters, I work for equality for them.</p>
<p>In todays world for tribal women, its pretty confusing because many of our male relatives have adopted those ways of our white male relatives in how they beat women - how they beat women today.</p>
<p>So I always encourage women, especially tribal women, to go back to the day that we were before that contact - pre-colonization.<br />How was it  for Turtle Island women and all over Canada and Mexico.<br />We find that women definitely had rights.</p>
<p>Sociologist Susan Fletcher wrote a lot about what was happening to the Indian people in the 1860s there especially in South Dakota.</strong></p>
<p><img alt="" src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/SittingBull3.jpg" width="225" /><br /><strong><br />Fletcher went to Fort Randall where Chief Sitting Bull was being held and incarcerated.</p>
<p>One of his wives came in with wood and she was stoking up this fire, warming up the fire, in the tent where he was held</p>
<p>Fletcher said:</p>
<p>Is there anything youth think I could help you with and he (Sitting Bull) looked at her and said.</p>
<p>By me signing the treaties our Indian womens lives are going to change.<br />I want you to look out and write about our Indian women.</p>
<p>Sitting Bull took off a ring and gave it to her to do that.</p>
<p>This Chief Sitting Bull from Standing Rock knew what was going to happen to us as tribal women when he signed those treaties. The treaty of Fort Laramie was signed in 1868 </p>
<p>Sister of man doing Crazy Horse monument came to Crow Creek on their honeymoon.<br />She was standing there with a group of tribal women and one of them gave a horse away.</p>
<p>She said: Shouldnt you ask your husband?</p>
<p>And the tribal woman said: My husband why? The horse belongs to me</p>
<p>The woman said: I forgot who I was talking to.</p>
<p>Property belonged to us and it was ours to give or to keep.</p>
<p>The many of the treaties between the U.S. and American Indian tribes were written by men not used to women with power or rights.</p>
<p>They came from a background where only men were in positions of power.<br />Only men signed treaties. Only men were in Congress.</p>
<p>They only wanted men in leadership positions.</p>
<p>If you look at the Irquois Nation. The clam mothers picked who would represent their clan. They had a process of nurturing a male to get to that point. There were things that this man could not do in order for him to be in a leadership position for the Iroquois Nation.</strong></p>
<p>Black Bears visit was coordinated by the NMU Center for Native American Studies and the non-profit Turtle Island Project in Munising, Michigan.</p>
<p>The Turtle Island Project (TIP) has held several concerts and other events to raises funds for the WBCWS. TIP Director Rev. Dr. Lynn Hubbard travels several times a year to the Rosebud Reservation.</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08002.jpg" alt="" width="382" /></p>
<p><strong>Black Bear was greeted by Dr. Judith Puncochar, an NMU Professor and an organizer of the annual UNITED Conference.</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08003.jpg" alt="" width="395" /></p>
<p><strong>Tillie Black Bear was introduced by Grace Chaillier, an NMU Adjunct Assistant Professor in the Center for Native American Studies and a registered member of the Sicangu Lakota band of the Rosebud Sioux - the same tribe as Black Bear.</strong></p>
<p>Please watch the other Turtle Island Project videos on Tillie Black Bear's talk in northern Michigan.</p>
<p>Black Bear addresses the Lakota teen suicide crisis, domestic violence, people respecting people and many other important issues.</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08010.jpg" alt="" width="395" /></p>
<p><strong><a href="http://www.TurtleIslandProject.org" target="_blank">The Turtle Island Project</a> thanks Tillie Black Bear, <a href="http://webb.nmu.edu/Centers/NativeAmericanStudies" target="_blank">NMU Center for Native American Studies</a>, <a href="http://www.nmu.edu/UNITED" target="_blank">Uniting Neighbors in the Experience of Diversity</a> (UNITED) and <a href="http://www.wbcws.org" target="_blank">White Buffalo Calf Woman Society, Inc</a>.</strong><br />---<br /><strong>Great womens quotes by nations:</strong><a href="http://www.shannonthunderbird.com/indigenous_women_rights.htm" target="_blank"></a></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/Lakotawomanbookcover.jpg" alt="" width="120" /></p>
<p><a href="http://www.shannonthunderbird.com/indigenous_women_rights.htm" target="_blank">http://www.shannonthunderbird.com/indigenous_women_rights.htm</a><br />---<br /><strong>Rosebud Indian Reservation map Wikipedia graphic by Karl Musser</strong></p>
<p><a href="http://upload.wikimedia.org/wikipedia/commons/1/1c/Rosebudreservationmap.png" target="_blank">http://upload.wikimedia.org/wikipedia/commons/1/1c/Rosebudreservationmap.png</a><br />---<br /><strong>Native Americans and European settlers:</strong></p>
<p><a href="http://en.wikipedia.org/wiki/United_states#Native_Americans_and_European_settlers" target="_blank">http://en.wikipedia.org/wiki/United_states#Native_Americans_and_European_settlers</a></p>
<p><a href="http://www.webconnections.com/MES5th/ColonialWomen_B4.htm" target="_blank">http://www.webconnections.com/MES5th/ColonialWomen_B4.htm</a><br /><strong><br />Iroquois clan sisters and suffrages women</strong>:</p>
<p><a href="http://www.now.org/nnt/summer-99/iroquois.html" target="_blank">http://www.now.org/nnt/summer-99/iroquois.html</a></p>
<p><a href="http://www.pinn.net/~sunshine/gage/features/untold.html" target="_blank">http://www.pinn.net/~sunshine/gage/features/untold.html</a></p>
<p><a href="http://www.awakenedwoman.com/iroquois_women.htm" target="_blank">http://www.awakenedwoman.com/iroquois_women.htm</a></p>
<p><strong>Cartoon on Iroquois clan sister and suffrages women drawn by Joseph Keppler</strong><br /><a href="http://www.ratical.org/many_worlds/6Nations/EoL/chp11.html" target="_blank">http://www.ratical.org/many_worlds/6Nations/EoL/chp11.html</a></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/WikipediaSuffrage_Parade_in_New_-1.jpg" alt="" width="321" /></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/NAIroquoisandsuffrageswomencourtesy.jpg" alt="" width="172" /></p>
<p><strong>Photo of suffrages women and Iroquois sister: Iroquois clan sister and suffrages women courtesy Syracuse Peace Council website and author Sally Roesch Wagner </strong><br /><a href="http://www.peacecouncil.net/pnl/06/751/751haud.htm" target="_blank">http://www.peacecouncil.net/pnl/06/751/751haud.htm</a><br />---<strong><br />Native American &#38; Indigenous and White Women’s Rights:</strong></p>
<p><a href="http://www.shannonthunderbird.com/indigenous_women_rights.htm" target="_blank">http://www.shannonthunderbird.com/indigenous_women_rights.htm</a></p>
<p><a href="http://www.historians.org/pubs/global_gender.cfm" target="_blank">http://www.historians.org/pubs/global_gender.cfm</a></p>
<p><a href="http://www.academicleadership.org/uploads/1/Review-Conquest-final.pdf" target="_blank">http://www.academicleadership.org/uploads/1/Review-Conquest-final.pdf</a></p>
<p><a href="http://www.academicleadership.org/literary_review/conquest_sexual_violence_and_american_indian_genocide.shtml" target="_blank">http://www.academicleadership.org/literary_review/conquest_sexual_violence_and_american_indian_genocide.shtml</a></p>
<p><a href="http://www.wic.org/misc/history.htm" target="_blank">http://www.wic.org/misc/history.htm</a></p>
<p><a href="http://www.hoover.archives.gov/exhibits/AmericanWomen/colony-country/index.html" target="_blank">http://www.hoover.archives.gov/exhibits/AmericanWomen/colony-country/index.html</a><br />---<br /><strong>Colonial women gather quilting website:</strong></p>
<p><a href="http://virtual.yosemite.cc.ca.us/mkehoe/weekly%20assignments%20history_116.htm" target="_blank">http://virtual.yosemite.cc.ca.us/mkehoe/weekly%20assignments%20history_116.htm</a><br />---<br /><strong>Sitting Bull Photo &#38; Info:</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/SittingBuffaloBullHunkpapa-Lakot-1.jpg" alt="" width="110" /></p>
<p><a href="http://en.wikipedia.org/wiki/Image:Sitting_Bull_-_edit2.jpg" target="_blank">http://en.wikipedia.org/wiki/Image:Sitting_Bull_-_edit2.jpg</a></p>
<p><strong>Sitting Bull photo by D. F. Barry, 1885 via the Library of Congress</strong></p>
<p><a href="http://en.wikipedia.org/wiki/Sitting_Bull" target="_blank">http://en.wikipedia.org/wiki/Sitting_Bull</a></p>
<p><strong><br />Sitting Bull Photo #2 &#38; 3 - unknown photographer:</strong><br /><a href="http://sittingbull.org/" target="_blank">http://sittingbull.org/</a><br /><a href="http://www.nativeusa.org/sitting_bull.htm" target="_blank">http://www.nativeusa.org/sitting_bull.htm</a></p>
<p><strong>Sitting Bull disrespected and insulted in death by the author who wrote Wizard of Oz:</strong><br /><a href="http://www.bgsu.edu/departments/acs/1890s/woundedknee/sitbull.html" target="_blank">http://www.bgsu.edu/departments/acs/1890s/woundedknee/sitbull.html</a></p>
<p>---<br /><strong>Native American and Tribal women graphics:</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/RosebudReservation1880-1.jpg" alt="" width="160" /></p>
<p><strong>Photo of Rosebud Reservation:</strong><br /><a href="http://www.manyponies.com/indianponies.htm" target="_blank">http://www.manyponies.com/indianponies.htm</a></p>
<p><strong>Lakota Grandmothers:</strong><br /><a href="http://ladyhawkesite.tripod.com/grandmothers.htm" target="_blank">http://ladyhawkesite.tripod.com/grandmothers.htm</a></p>
<p><strong>White Buffalo Calf Woman Legend:</strong><br /><a href="http://www.firstpeople.us/FP-Html-Legends/White-Buffalo-Calf-Woman-Sioux.html" target="_blank">http://www.firstpeople.us/FP-Html-Legends/White-Buffalo-Calf-Woman-Sioux.html</a></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TIPSeries-TillieBlackBear2008NMU-1.jpg" alt="" width="228" /></p>
<p><strong>Elizabeth Cady Stanton (seated) with Susan B. Anthony (standing) photo on Wikipedia courtesy the Library of Congress</strong><br /><a href="http://en.wikipedia.org/wiki/Susan_Anthony" target="_blank">http://en.wikipedia.org/wiki/Susan_Anthony</a></p>
<p><strong><br />Suffrage Parade photo from The New York Times photo archive:</strong><br /><a href="http://en.wikipedia.org/wiki/Image:Suffragists_Parade_Down_Fifth_Avenue,_1917.JPG" target="_blank">http://en.wikipedia.org/wiki/Image:Suffragists_Parade_Down_Fifth_Avenue,_1917.JPG</a><br />---</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/LakotaTeepeeCourtesyNationalPark-2.jpg" alt="" width="116" /></p>
<p><strong>Lakota Tipi</strong></p>
<p>Courtesy: National Park Service<br />---<br /><strong>Tipi</strong></p>
<p>Courtesy: Alpha</p>
<p><strong>Tipi Tatanka Camp</strong></p>
<p>Photo by Wanaunsapi Tiyospaye<br />---</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/Sicangu-Women-and-Children-1868-1.jpg" alt="" width="160" /></p>
<p>1868 Sicangu Women and Children</p>
<p>1893 Arapaho two women and child</p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/Lakota-Woman-And-Dog-Travois-Ros-2.jpg" alt="" width="160" /></p>
<p>Lakota Woman works with dog on Rosebud Reservation<br />Sitting Bull (Hunkpapa Lakota) - all courtesy:</p>
<p><strong>First People website.</strong><br /><a href="http://www.firstpeople.us" target="_blank">http://www.firstpeople.us</a></p>
<p>---</p>
<p>Colonial women and Native women<br /><a href="http://www.snowwowl.com/histswritnawomen.html" target="_blank">http://www.snowwowl.com/histswritnawomen.html</a></p>
<p>-------<br /><strong>Tillie Black Bear. Executive Director<br />White Buffalo Calf Woman Society, Inc.</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/WBCWSDomesticViolencepix2.jpg" alt="" width="162" /><br /><strong>October is Domestic Violence Month</strong></p>
<p><strong>Tillie Black Bear is an enrolled member of the Sicangu Lakota Nation/Rosebud Sioux Tribe. </p>
<p>She is presently the Executive Director of the <a href="http://www.wbcws.org" target="_blank">White Buffalo Calf Woman Society, Inc.</a>, which operates the oldest shelter for women who have been battered or raped on Indian reservations; and is the first shelter for women of color in the U.S. (1978).</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/WBCWSDomesticViolencepix.jpg" alt="" width="103" /></p>
<p><strong>Tillie Black Bear is recognized throughout the state, nationally, and in Indian Country as one of the leading experts on violence against women and children.</p>
<p>She is a founding mother of the National Coalition Against Domestic Violence (NCADV) and a founder of the South Dakota Coalition Against Domestic Violence and Sexual Assault (SDCADVSA) both in 1978. </p>
<p>She was the first woman of color to chair NCADV and continues to sit on the Board of Director for the SDCADVSA </p>
<p>Black Bear presently serves on the advisory board of National Sexual Assault Resource Center, Pennsylvania and is past member of the professional advisory board of the National Domestic Violence Hotline, Austin, TX.</strong></p>
<p><img src="http://i417.photobucket.com/albums/pp260/TurtleIslandProject/TillieBlackBearNMUUnited9-23-08033.jpg" alt="" width="398" /></p>
<p><strong>Tillie Black Bear is pictured on Sept. 23, 2008 in Marquette, MI with Dr. José Cuellar of La Raza Studies at San Francisco State University, who spoke on &#34;The Four Enemies of Diversity.&#34;</strong></p>
<p><strong>Black Bear and Dr. Cuellar were both featured speakers at the 2008 UNITED Conference at Northern Michigan University.</strong></p>
<p>--- 