RFC4287 section 4.2.7.2 specifies that "rel=alternate" is effectively the default for the link element: If the "rel" attribute is not present, the link element MUST be interpreted as if the link relation type is "alternate". So having a plain `<link>` and a `<link rel="alternate">` is kind of weird, *especially* if they point to different resources. So we just remove the plain entry and *replace* it with the rel=alternate, which is really the default here. The sample Atom feeds in RFC4287 (section 1.1) do give an example *only* with `rel="alternate"`: <entry> <title>Atom draft-07 snapshot</title> <link rel="alternate" type="text/html" href="http://example.org/2005/04/02/atom"/> <link rel="enclosure" type="audio/mpeg" length="1337" href="http://example.org/audio/ph34r_my_podcast.mp3"/> To refer to the actual Wallabag URL, we use the "via", which is defined in the RFC as: 5. The value "via" signifies that the IRI in the value of the href attribute identifies a resource that is the source of the information provided in the containing element. I'm not sure how widely used that tag is, but I feel that the distinction between `rel="alternate"` is weird at best, and buggy (and certainly introducing unpleasantness in my usage) at worse. Before: <link href="{{ entry.url }}"/> <link rel="alternate" type="text/html" href="{{ url('view', {'id': entry.id}) }}"/> <link rel="via" href="{{ entry.url }}"/> That is: <link href="http://example.com/"/> <link rel="alternate" type="text/html" href="http://wallabag.example.com/view/1"/> <link rel="via" href="http://example.com/"/> After: <link rel="alternate" href="{{ entry.url }}"/> <link rel="via" type="text/html" href="{{ url('view', {'id': entry.id}) }}"/> That is: <link rel="alternate" href="http://example.com"/> <link rel="via" type="text/html" href="http://wallabag.example.com/view/1"/> Closes: #7848 |
||
---|---|---|
.github | ||
app | ||
assets | ||
bin | ||
data/db | ||
docker | ||
fixtures | ||
migrations | ||
scripts | ||
src | ||
templates | ||
tests | ||
translations | ||
var | ||
web | ||
.babelrc | ||
.composer-auth.json | ||
.editorconfig | ||
.env | ||
.eslintrc.json | ||
.gitattributes | ||
.gitignore | ||
.nvmrc | ||
.php-cs-fixer.dist.php | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
compose.yaml | ||
composer-dependency-analyser.php | ||
composer.json | ||
composer.lock | ||
COPYING.md | ||
CREDITS.md | ||
GNUmakefile | ||
Makefile | ||
package.json | ||
phpstan-baseline.neon | ||
phpstan.neon | ||
phpunit.xml.dist | ||
README.md | ||
RELEASE_PROCESS.md | ||
SECURITY.md | ||
stylelint.config.js | ||
webpack.config.js | ||
yarn.lock |
wallabag
wallabag is a web application allowing you to save web pages for later reading. Click, save and read it when you want. It extracts content so that you won't be distracted by pop-ups and cie.
You can install it on your own server, or you can create an account on wallabag.it.
- Website: wallabag.org
- Android app: wallabag/android-app
- iOS app: wallabag/ios-app
- Browser extension: wallabag/wallabagger
- GNOME (Linux) app: read-it-later (not maintained by this project)
- All resources about wallabag ecosystem are listed here: https://github.com/wallabag/wallabag/wiki/wallabag-ecosystem
Documentation
The documentation is available at https://doc.wallabag.org.
You can contribute to it through its dedicated repository, available here: https://github.com/wallabag/doc.
Installation
Please read the documentation to see the wallabag requirements.
Then you can install wallabag by executing the following commands:
git clone https://github.com/wallabag/wallabag.git
cd wallabag && make install
Now, configure a virtual host to use your wallabag.
Other methods
Refer to the installation documentation for other installation methods.
Translation
This project uses Weblate for translation.
Feel free to help us translating wallabag.
Contributing
To learn more about developing wallabag, please refer to the contribution guide.
Content extraction relies on Graby, php-readability and ftr-site-config.
Sponsors

License
Copyright © 2013-current Nicolas Lœuillet nicolas@loeuillet.org
This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the COPYING.md file for more details.