mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-17 17:38:54 +00:00

still using this, after discussion on the phpdoc list. From now on, manual.ced will need to be found at ~/.phpdoc/manual.ced. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@288721 c90b9560-bf6c-de11-be94-00142212c4b1
131 lines
4.3 KiB
XML
131 lines
4.3 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision$ -->
|
|
|
|
<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
|
|
-->
|
|
|