aboutsummaryrefslogtreecommitdiff
path: root/doc/forum/transition_from_handwritten_html_to_ikiwiki.mdwn
blob: a8d04a0ad5a82d30f684c585aaabfabab42fc537 (plain)
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
I'm trying to convert hand written html site to ikiwiki and maintain url compatibility. html plugin with indexpages=1 converts all dir_name/index.html correctly to dir_name urls with wiki/css based content, but somedir/somefile.html files are only accessible as somedir/somefile/. Non .html files seem to accessible with their full paths, for example somedir/pic.jpg from hand written html can be accessed by same path under ikiwiki.

How to make somedir/somefile.html accessible as somedir/somefile.html under ikiwiki?

Thanks,

-Mikko

> Hello! The options you need to investigate are `--usedirs` and
> `--no-usedirs`. The default `--usedirs` takes any source page foo
> (regardless of its format, be it markdown or html) and converts it into a
> destination page foo/index.html (URL foo/). By comparison, `--no-usedirs`
> maps the source file onto a destination file directly: src/foo.html becomes
> dest/foo.html, src/bar.mdwn becomes dest/bar.html, etc.
> 
> It sounds like you want `--no-usedirs`, or the corresponding `usedirs => 0,`
> option in your setup file. See [[usage]] for more information. -- [[Jon]]

Thanks, usedirs seems to be just the thing I need.

-Mikko

Actually usedirs didn't do exactly what I want. The old site contains both
somedir/index.html and somedir/somename.html files. With html plugin and 
indexpages=1 the somedir/index.html pages are accessed correctly but 
somedir/somefile.html files not.

With usedirs => 0, somedir/somename.html pages are accessed correctly but
somedir/index.html pages are not. Actually the handwritten somedir/index.html
files were removed on a rebuild:

    $ ikiwiki -setup blog.setup -rebuild -v
    ...
    removing test2/index.html, no longer built by test2

Is there a way for both index.html and somename.html raw html files to show up through ikiwki?

-Mikko

> I think you want usedirs => 0 and indexpages => 0?
>
> What IkiWiki does is to map the source filename to an abstract page name
> (indexpages alters how this is done), then map the abstract page name
> to an output filename (usedirs alters how this is done).
>
> The three columns here are input, abstract page name, output:
>
>     usedirs => 0, indexpages => 0:
>         a/index.html -> a/index -> a/index.html
>         a/b.html -> a/b -> a/b.html
>     usedirs => 1, indexpages => 0:
>         a/index.html -> a/index -> a/index/index.html
>         a/b.html -> a/b -> a/b/index.html
>     usedirs => 0, indexpages => 1:
>         a/index.html -> a -> a.html
>         a/b.html -> a/b -> a/b.html
>     usedirs => 1, indexpages => 1:
>         a/index.html -> a -> a/index.html
>         a/b.html -> a/b -> a/b/index.html
>
> The abstract page name is what you use in wikilinks and pagespecs.
>
> What I would suggest you do instead, though, is break your URLs once
> (but put in Apache redirections), to get everything to be consistent;
> I strongly recommend usedirs => 1 and indexpages => 0, then always
> advertising URLs that look like <http://www.example.com/a/b/>. This is
> what ikiwiki.info itself does, for instance. --[[smcv]]

Thanks for the explanation. usedirs => 0 and indexpages => 0 does the trick,
but I'll try to setup mod_rewrite from foo/bar.html to foo/bar in the final 
conversion.

-Mikko

> That's roughly what I do, but you can do it with `Redirect` and `RedirectMatch` from `mod_alias`, rather than fire up rewrite. Mind you I don't write a generic rule, I have a finite set of pages to redirect which I know. -- [[Jon]]

I'm getting closer. Now with usedirs => 1 and raw html pages, ikiwiki transforms foo/index.html to foo/index/index.html.
Can ikiwiki be instructed map foo/index.html to page foo instead that foo/index?

-Mikko

> If you don't already have a foo.html in your source, why not just rename foo/index.html to foo.html? With usedirs, it will then map to foo/index.html. Before, you had 'foo/' and 'foo/index.html' as working URLS, and they will work after too. 
> 
> If you did have a foo.html and a foo/index.html, hmm, that's a tricky one. -- [[Jon]]

> We may be going round in circles - that's what indexpages => 1 does :-)
> See the table I constructed above, which explains the mapping from input
> files to abstract page names, and then the mapping from abstract page
> names to output files. (I personally think that moving your source pages
> around like Jon suggested is a better solution, though. --[[smcv]]