[pmwiki-users] CleanUrls, again (was: Putting ".html" extensions...)
Joachim Durchholz
jo at durchholz.org
Fri Mar 3 15:30:19 CST 2006
Patrick R. Michaud schrieb:
> [Things that I agree with snipped]
> Then for those sites and admins that want to also directly serve
> files that begin with other characters, we add a subsection
> after example three that looks something like:
>
> !!! Serving files and directories with uppercase letters
>
> To allow url requests for files or directories that begin
> with uppercase letters to continue to work, add the following
> lines immediately before the last RewriteRule above:
>
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
>
> Is that workable?
I think the main problem with CleanUrls is that this configuration of
PmWiki doesn't clearly distinguish file URLs from wikipage URLs. A wiki
page looks like
...path/to/wiki/Group/Name
while a file URL looks like
...path/to/wiki/pub/skins/pmwiki
What makes matters worse is that anybody could create a "Pub" group, and
on a case-insensitive file systems, the administrator will be utterly
confused why
...path/to/wiki/Pub/MyPub
is served in an entirely different way than
...path/to/wiki/pub/mypub/pmwiki.css
(until he's reminded that URL space is always case-sensitive... but even
if you know that, it's easy to confuse that if you're in a hurry).
Personally, if I see somebody designing file URLs into a wiki, my
knee-jerk reaction is "separate the URL spaces!"
E.g. I'd tell them to do
...path/to/wiki/pages/Pub/MyPub
vs.
...path/to/wiki/pub/skins/pmwiki/pmwiki.css
After that, people can serve static pages (or even scripts) from outside
the wikipage namespace to their heart's contents, without requiring
mod_rewrite magic to properly guess whether it's a file or a wikipage
that should be served.
The "simply serve it as a file if it exists" approach has too much
overlap with other policies; it creates a tangle of responsibilities, in
a server where getting the security right is too difficult already.
It would be better if everything inside PmWiki's URL space were handled
by PmWiki.
Yes, this means that PmWiki should serve everything through pmwiki.php,
even if it is "just" serving a file unchanged. But then PmWiki can place
a single, sane permission scheme; right now, you have to know *three*
things to correctly determine whether something will be served:
* Whether it's a file or a wiki page
* PmWiki's security policy
* Apache's security policy
That's two things too many IMNSHO.
Oh, and then there are the other problems that I mentioned in my replies
to Hagan. I think it's a great idea, and probably one that works best
for his specific situation, but I don't think it should be generally
applied - at least not unless the administrator has a clear idea of what
he's doing (i.e. the kind of guy who writes Cookbook pages, not the kind
of guy who reads them).
Just my 2c.
Oh, and my recommendation: Leave that policy in the CleanUrls page, but
mention the alternatives.
I agree the page is confusing. However, I don't think that's because
it's listing too many alternatives; the confusion comes from having too
many alternatives and no proposals for choosing the right one.
In other words, the page should be structured like this:
* If you have situation (a) and (b), do alternative (1).
* If you have situation (c), do alternative (2).
With clear instructions how to find out what situation you have. (The
"situation" involves things like: Apache setup, URL space policy,
whether public uploads are enabled, etc.)
Writing that would be a major endeavour; i.e. it would move the burden
of finding out from the shoulders of the recipe readers to the shoulders
of the recipe writer. But it *should* be done. (By somebody. I don't
have the breadth of experience to do it with any confidence, and have
too many other things in the pipeline already.)
Regards,
Jo
More information about the pmwiki-users
mailing list