diff --git a/doc/sphinx/book/administration.rst b/doc/sphinx/book/administration.rst
index 5bf8bb18d97ca4870703e84bf993d545f90e749b..01f1a4355f8050a68c7688d24cb38fb0acd66dfa 100644
--- a/doc/sphinx/book/administration.rst
+++ b/doc/sphinx/book/administration.rst
@@ -58,7 +58,7 @@ A Tarantool server's process title has these components:
   - "running" (ordinary node "ready to accept requests"),
   - "loading" (ordinary node recovering from old snap and wal files),
   - "orphan" (not in a cluster),
-  - "hot_standby" (see section :ref:`local hot standby <book-cfg-local_hot_standy>`), or
+  - "hot_standby" (see section :ref:`local hot standby <book_cfg_local_hot_standby>`), or
   - "dumper" + process-id (saving a snapshot).
 * **custom_proc_title** is taken from the :confval:`custom_proc_title` configuration parameter, if one was specified.
 
@@ -192,7 +192,7 @@ declaration does not have an ``end`` keyword). Example:
     console.delimiter('')!
 
 For a condensed Backus-Naur Form [BNF] description of the suggested form
-of client requests, see http://tarantool.org/doc/box-protocol.html.
+of client requests, see http://tarantool.org/doc/dev_guide/box-protocol.html.
 
 In *interactive* mode, one types requests and gets results. Typically the
 requests are typed in by the user following prompts. Here is an example of
@@ -970,8 +970,8 @@ before reading this section.
 The modules that come from Tarantool developers and community contributors are
 on rocks.tarantool.org_. Some of them
 -- :ref:`expirationd <package-expirationd>`,
-:ref:`mysql <d-plugins-mysql-example>`,
-:ref:`postgresql <d-plugins-postgresql-example>`,
+:ref:`mysql <d_plugins-mysql-example>`,
+:ref:`postgresql <d_plugins-postgresql-example>`,
 :ref:`shard <package-shard>` --
 are discussed elsewhere in this manual.
 
diff --git a/doc/sphinx/book/app/b_internals.rst b/doc/sphinx/book/app/b_internals.rst
index c104a76d03eec6ea35b890fe25f64fe7c95eacb2..3ca52472fcc1152fe24ef9016f2b554f434a8112 100644
--- a/doc/sphinx/book/app/b_internals.rst
+++ b/doc/sphinx/book/app/b_internals.rst
@@ -22,7 +22,7 @@ file is based on the log sequence number of the first record in the file, plus
 an extension ``.xlog``.
 
 Apart from a log sequence number and the data change request (its format is the
-same as in the binary protocol and is described in `doc/box-protocol.html`_),
+same as in the binary protocol and is described in `doc/dev_guide/box-protocol.html`_),
 each WAL record contains a header, some metadata, and then the data formatted
 according to `msgpack`_ rules. For example this is what the WAL file looks like
 after the first INSERT request ("s:insert({1})") for the introductory sandbox
@@ -267,4 +267,4 @@ The following temporary limitations apply for version 1.6:
   limit is reached, users may have to reorganize the _cluster space manually.
 
 .. _MsgPack: https://en.wikipedia.org/wiki/MessagePack
-.. _doc/box-protocol.html: http://tarantool.org/doc/box-protocol.html
+.. _doc/dev_guide/box-protocol.html: http://tarantool.org/doc/dev_guide/box-protocol.html
diff --git a/doc/sphinx/book/app/d_plugins.rst b/doc/sphinx/book/app/d_plugins.rst
index 6f8b04a084a3e0f4716c9d333f62e65f949fa3a4..9e3a9bc4157f53dfb4c5f9287128990514fef9d7 100644
--- a/doc/sphinx/book/app/d_plugins.rst
+++ b/doc/sphinx/book/app/d_plugins.rst
@@ -40,7 +40,7 @@ From a user's point of view the MySQL and PostgreSQL rocks are
 very similar, so the following sections -- "MySQL Example" and
 "PostgreSQL Example" -- contain some redundancy.
 
-.. _d-plugins-mysql-example:
+.. _d_plugins-mysql-example:
 
 ===========================================================
                   MySQL Example
@@ -388,7 +388,7 @@ Lua tutorial earlier in the Tarantool user manual.
 Observe the result. It contains "MySQL row". So this is the row that was inserted
 into the MySQL database. And now it's been selected with the Tarantool client.
 
-.. _d-plugins-postgresql-example:
+.. _d_plugins-postgresql-example:
 
 ===========================================================
                   PostgreSQL Example
diff --git a/doc/sphinx/book/box/admin.rst b/doc/sphinx/book/box/admin.rst
index f3e9649f8d15a5bd5c12456e394a67a90e22da94..c2accd3f1c6e97fa1ecd09991fa3175b4b860d7f 100644
--- a/doc/sphinx/book/box/admin.rst
+++ b/doc/sphinx/book/box/admin.rst
@@ -34,7 +34,7 @@ A reference description also follows below:
 
     Although box.snapshot() does not cause a fork, there is a separate fiber
     which may produce snapshots at regular intervals -- see the discussion of
-    the :ref:`snapshot daemon <book-cfg-snapshot_daemon>`.
+    the :ref:`snapshot daemon <book_cfg_snapshot_daemon>`.
 
     **Example:**
 
diff --git a/doc/sphinx/book/box/index.rst b/doc/sphinx/book/box/index.rst
index fc7f697a49c39056b91dbe6a37c155150ea24154..d88a3cf87ae4a2be3cb99250e2beffe41f9123a3 100644
--- a/doc/sphinx/book/box/index.rst
+++ b/doc/sphinx/book/box/index.rst
@@ -342,9 +342,9 @@ Since not all Tarantool operations can be expressed with the data-manipulation
 functions, or with Lua, to gain complete access to data manipulation
 functionality one must use a :ref:`Perl, PHP, Python or other programming language connector <box-connectors>`.
 The client/server protocol is open and documented: an annotated BNF can be found
-in the source tree, file `doc/box-protocol.html`_.
+in the source tree, file `doc/dev_guide/box-protocol.html`_.
 
-.. _doc/box-protocol.html: http://tarantool.org/doc/box-protocol.html
+.. _doc/dev_guide/box-protocol.html: http://tarantool.org/doc/dev_guide/box-protocol.html
 
 --------------
 Saving To Disk
diff --git a/doc/sphinx/book/configuration/cfg_basic.rst b/doc/sphinx/book/configuration/cfg_basic.rst
index 933f3197e43aab43d6d97a3e5a10e793787c8497..d4b6257b55e79e06842970e186ced88ea37da7d2 100644
--- a/doc/sphinx/book/configuration/cfg_basic.rst
+++ b/doc/sphinx/book/configuration/cfg_basic.rst
@@ -50,7 +50,7 @@
     administrative host and port).
 
     A typical value is 3301. The listen parameter may also be set for
-    :ref:`local hot standby <book-cfg-local_hot_standy>`.
+    :ref:`local hot standby <book_cfg_local_hot_standby>`.
 
     NOTE: A replica also binds to this port, and accepts connections, but these
     connections can only serve reads until the replica becomes a master.
diff --git a/doc/sphinx/book/configuration/index.rst b/doc/sphinx/book/configuration/index.rst
index f0f6b2c78fa71d06ac23cc29dc587a98fbeb605e..0035fa03467be78b43ab43039dcc688cb5089997 100644
--- a/doc/sphinx/book/configuration/index.rst
+++ b/doc/sphinx/book/configuration/index.rst
@@ -193,47 +193,47 @@ for binary logging and snapshots, for replication, for networking, and for loggi
                  Basic parameters
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-basic.rst
+.. include:: cfg_basic.rst
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  Configuring the storage
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-storage.rst
+.. include:: cfg_storage.rst
 
-.. _book-cfg-snapshot_daemon:
+.. _book_cfg_snapshot_daemon:
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     Snapshot daemon
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-snapshot_daemon.rst
+.. include:: cfg_snapshot_daemon.rst
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             Binary logging and snapshots
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-binary_logging_snapshots.rst
+.. include:: cfg_binary_logging_snapshots.rst
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     Replication
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-replication.rst
+.. include:: cfg_replication.rst
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        Networking
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-networking.rst
+.. include:: cfg_networking.rst
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          Logging
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-.. include:: cfg-logging.rst
+.. include:: cfg_logging.rst
 
-.. _book-cfg-local_hot_standy:
+.. _book_cfg_local_hot_standby:
 
 =====================================================================
                          Local hot standby
diff --git a/doc/sphinx/book/index.rst b/doc/sphinx/book/index.rst
index 063968476134b60eb7c4262d6e9946b9fe2fed4f..2f49d3a0ecd247c8ef69da7128bca3e0ca6dc740 100644
--- a/doc/sphinx/book/index.rst
+++ b/doc/sphinx/book/index.rst
@@ -14,8 +14,8 @@
     configuration/index
     administration
     connectors/index
-    app/a-errcodes
-    app/b-internals
-    app/c-lua_tutorial
-    app/d-plugins
-    app/e-sophia/index
+    app/a_errcodes
+    app/b_internals
+    app/c_lua_tutorial
+    app/d_plugins
+    app/e_sophia/index
diff --git a/doc/sphinx/book/replication/index.rst b/doc/sphinx/book/replication/index.rst
index 810e7bbbe9272491a753072e7d1df477c7c3c98d..77ee692033fb15f355c5d21aa25eda8bfa2e346c 100644
--- a/doc/sphinx/book/replication/index.rst
+++ b/doc/sphinx/book/replication/index.rst
@@ -71,7 +71,7 @@ a master and vice versa with the help of the :func:`box.cfg` statement.
 
 NOTE:
 The replica does not inherit the master's configuration parameters, such
-as the ones that cause the :ref:`snapshot daemon <book-cfg-snapshot_daemon>` to run on the master.
+as the ones that cause the :ref:`snapshot daemon <book_cfg_snapshot_daemon>` to run on the master.
 To get the same behavior, one would have to set the relevant parameters explicitly
 so that they are the same on both master and replica.
 
@@ -408,12 +408,12 @@ screen looks like this: (except that UUID values are always different):
         .. container:: b-documentation_tab
             :name: terminal-2-1
 
-            .. include:: 1-1.rst
+            .. include:: 1_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-2-2
 
-            .. include:: 1-2.rst
+            .. include:: 1_2.rst
 
     .. raw:: html
 
@@ -489,12 +489,12 @@ on Terminal #1, because both servers are in the same cluster.
         .. container:: b-documentation_tab
             :name: terminal-3-1
 
-            .. include:: 2-1.rst
+            .. include:: 2_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-3-2
 
-            .. include:: 2-2.rst
+            .. include:: 2_2.rst
 
     .. raw:: html
 
@@ -558,12 +558,12 @@ Now the screen looks like this:
         .. container:: b-documentation_tab
             :name: terminal-4-1
 
-            .. include:: 3-1.rst
+            .. include:: 3_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-4-2
 
-            .. include:: 3-2.rst
+            .. include:: 3_2.rst
 
     .. raw:: html
 
@@ -630,12 +630,12 @@ Now the screen looks like this (remember to click on the "Terminal #2" tab when
         .. container:: b-documentation_tab
             :name: terminal-5-1
 
-            .. include:: 4-1.rst
+            .. include:: 4_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-5-2
 
-            .. include:: 4-2.rst
+            .. include:: 4_2.rst
 
     .. raw:: html
 
@@ -704,12 +704,12 @@ similar sizes because they both contain the same tuples.
         .. container:: b-documentation_tab
             :name: terminal-6-1
 
-            .. include:: 5-1.rst
+            .. include:: 5_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-6-2
 
-            .. include:: 5-2.rst
+            .. include:: 5_2.rst
 
     .. raw:: html
 
@@ -774,12 +774,12 @@ messages):
         .. container:: b-documentation_tab
             :name: terminal-7-1
 
-            .. include:: 6-1.rst
+            .. include:: 6_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-7-2
 
-            .. include:: 6-2.rst
+            .. include:: 6_2.rst
 
     .. raw:: html
 
@@ -845,12 +845,12 @@ Now the screen looks like this:
         .. container:: b-documentation_tab
             :name: terminal-8-1
 
-            .. include:: 7-1.rst
+            .. include:: 7_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-8-2
 
-            .. include:: 7-2.rst
+            .. include:: 7_2.rst
 
     .. raw:: html
 
@@ -919,12 +919,12 @@ The screen now looks like this:
         .. container:: b-documentation_tab
             :name: terminal-9-1
 
-            .. include:: 8-1.rst
+            .. include:: 8_1.rst
 
         .. container:: b-documentation_tab
             :name: terminal-9-2
 
-            .. include:: 8-2.rst
+            .. include:: 8_2.rst
 
     .. raw:: html
 
diff --git a/doc/sphinx/conf.py b/doc/sphinx/conf.py
index eabd0ece9b483556537a5f1b4e273affd7aff598..1da18453482e42400487c4da89c3718ed7999b74 100644
--- a/doc/sphinx/conf.py
+++ b/doc/sphinx/conf.py
@@ -38,9 +38,9 @@ version = '.'.join(release.split('.')[0:2])
 exclude_patterns = [
     '_build',
     'book/connectors/__*',
-    'book/replication/*-1.rst',
-    'book/replication/*-2.rst',
-    'book/configuration/cfg-*'
+    'book/replication/*_1.rst',
+    'book/replication/*_2.rst',
+    'book/configuration/cfg_*'
 ]
 
 pygments_style = 'sphinx'
diff --git a/doc/sphinx/dev_guide/index.rst b/doc/sphinx/dev_guide/index.rst
index 56ded99a0859a3919323dbfc91a7ae2ace2ca550..96f8e17eac81ef3fd8ad7a5147e33141e8c6a9a3 100644
--- a/doc/sphinx/dev_guide/index.rst
+++ b/doc/sphinx/dev_guide/index.rst
@@ -9,7 +9,7 @@
     building_from_source
     building_documentation
     developer_guidelines
-    box-protocol
+    box_protocol
     c_style_guide
     python_style_guide
     release_management
diff --git a/doc/sphinx/reference/index.rst b/doc/sphinx/reference/index.rst
index 995740e7061ea7f662f7f2c0fae08174552a15f8..3fd5cab0b7e37ced314a6a383406c40bc739a4a3 100644
--- a/doc/sphinx/reference/index.rst
+++ b/doc/sphinx/reference/index.rst
@@ -16,7 +16,7 @@
     box_error
     expirationd
     fiber
-    fiber-ipc
+    fiber_ipc
     fio
     fun
     jit