File: apache.xml

package info (click to toggle)
php-doc 20100521-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 59,992 kB
  • ctags: 4,085
  • sloc: xml: 796,833; php: 21,338; cpp: 500; sh: 117; makefile: 58; awk: 28
file content (131 lines) | stat: -rw-r--r-- 4,358 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 297028 $ -->

<chapter xml:id="hw.apache" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 <title>Integration with Apache</title>
 <para>
  The Hyperwave extension is best used when PHP is compiled as an
  Apache module. In such a case the underlying Hyperwave server can
  be hidden from users almost completely if Apache uses its rewriting
  engine. The following instructions will explain this.
 </para>
 <para>
  Since PHP with Hyperwave support built into Apache is intended
  to replace the native Hyperwave solution based on Wavemaster, we
  will assume that the Apache server will only serve as a Hyperwave
  web interface for these examples. This is not necessary but it simplifies
  the configuration. The concept is quite simple. First of all you
  need a PHP script which evaluates the <varname>$_ENV['PATH_INFO']</varname>
  variable and treats its value as the name of a Hyperwave
  object. Let's call this script <literal>'Hyperwave'</literal>. The URL
  <literal>http://your.hostname/Hyperwave/name_of_object</literal>
  would than return the Hyperwave object with the name
  <literal>'name_of_object'</literal>. Depending on the type of the object
  the script has to react accordingly. If it is a collection, it will probably
  return a list of children. If it is a document it will return the
  mime type and the content. A slight improvement can be achieved
  if the Apache rewriting engine is used. From the users point of
  view it would be more straight forward if the URL
  <literal>http://your.hostname/name_of_object</literal> would
  return the object. The rewriting rule is quite easy:

  <informalexample>
   <programlisting role="apache-conf">
<![CDATA[
RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
]]>
   </programlisting>
  </informalexample>

  Now every URL relates to an object in the Hyperwave server. This
  causes a simple to solve problem. There is no way to execute a
  different script, e.g. for searching, than the 'Hyperwave'
  script. This can be fixed with another rewriting rule like the
  following:

  <informalexample>
   <programlisting role="apache-conf">
<![CDATA[
RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
]]>
   </programlisting>
  </informalexample>

  This will reserve the directory <filename>/usr/local/apache/htdocs/hw</filename>
  for additional scripts and other files. Just make sure this rule is
  evaluated before the one above. There is just a little drawback:
  all Hyperwave objects whose name starts with <literal>'hw/'</literal>
  will be shadowed. So, make sure you don't use such names. If you need
  more directories, e.g. for images just add more rules or place
  them all in one directory. Before you put those instructions, don't
  forget to turn on the rewriting engine with

  <informalexample>
   <programlisting role="apache-conf">
<![CDATA[
RewriteEngine on
]]>
   </programlisting>
  </informalexample>

  You will need scripts:

  <itemizedlist>
    <listitem>
     <simpara>
     to return the object itself
     </simpara>
    </listitem>
    <listitem>
     <simpara>
     to allow searching
     </simpara>
    </listitem>
    <listitem>
     <simpara>
     to identify yourself
     </simpara>
    </listitem>
    <listitem>
     <simpara>
     to set your profile
     </simpara>
    </listitem>
    <listitem>
     <simpara>
     one for each additional function like to show
     the object attributes, to show information about users,
     to show the status of the server, etc.
     </simpara>
    </listitem>
  </itemizedlist>
 </para>
 <para>
  As an alternative to the Rewrite Engine, you can also consider using
  the Apache <literal>ErrorDocument</literal> directive, but be aware,
  that <literal>ErrorDocument</literal> redirected pages cannot receive
  POST data.
 </para>
</chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->