diff --git a/README.md b/README.md
index b9f2b7594..3dfb435fa 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
[](https://crates.io/crates/actix-web)
-[](https://docs.rs/actix-web/3.3.2)
+[](actix_web)
[](https://blog.rust-lang.org/2020/03/12/Rust-1.42.html)

[](https://deps.rs/crate/actix-web/3.3.2)
@@ -40,7 +40,7 @@
* [Website & User Guide](https://actix.rs)
* [Examples Repository](https://github.com/actix/examples)
-* [API Documentation](https://docs.rs/actix-web)
+* [API Documentation](actix_web)
* [API Documentation (master branch)](https://actix.rs/actix-web/actix_web)
## Example
diff --git a/actix-files/README.md b/actix-files/README.md
index 685e5dbe5..ffc22758d 100644
--- a/actix-files/README.md
+++ b/actix-files/README.md
@@ -3,7 +3,7 @@
> Static file serving for Actix Web
[](https://crates.io/crates/actix-files)
-[](https://docs.rs/actix-files/0.4.1)
+[](actix_files)
[](https://blog.rust-lang.org/2020/03/12/Rust-1.42.html)

@@ -13,7 +13,7 @@
## Documentation & Resources
-- [API Documentation](https://docs.rs/actix-files/)
+- [API Documentation](actix_files)
- [Example Project](https://github.com/actix/examples/tree/master/static_index)
- [Chat on Gitter](https://gitter.im/actix/actix-web)
- Minimum supported Rust version: 1.42 or later
diff --git a/actix-http-test/README.md b/actix-http-test/README.md
index c847c8515..25940dea4 100644
--- a/actix-http-test/README.md
+++ b/actix-http-test/README.md
@@ -3,13 +3,13 @@
> Various helpers for Actix applications to use during testing.
[](https://crates.io/crates/actix-http-test)
-[](https://docs.rs/actix-http-test/2.1.0)
+[](actix_http_test)

[](https://deps.rs/crate/actix-http-test/2.1.0)
[](https://gitter.im/actix/actix-web?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Documentation & Resources
-- [API Documentation](https://docs.rs/actix-http-test)
+- [API Documentation](actix_http_test)
- [Chat on Gitter](https://gitter.im/actix/actix-web)
- Minimum Supported Rust Version (MSRV): 1.42.0
diff --git a/actix-http-test/src/lib.rs b/actix-http-test/src/lib.rs
index f881dfb4c..3ab3f8a0d 100644
--- a/actix-http-test/src/lib.rs
+++ b/actix-http-test/src/lib.rs
@@ -53,7 +53,7 @@ pub async fn test_server>(factory: F) -> TestServer
test_server_with_addr(tcp, factory).await
}
-/// Start [`test server`](./fn.test_server.html) on a concrete Address
+/// Start [`test server`](test_server()) on a concrete Address
pub async fn test_server_with_addr>(
tcp: net::TcpListener,
factory: F,
diff --git a/actix-http/README.md b/actix-http/README.md
index 9103cd184..0a6a989db 100644
--- a/actix-http/README.md
+++ b/actix-http/README.md
@@ -3,14 +3,14 @@
> HTTP primitives for the Actix ecosystem.
[](https://crates.io/crates/actix-http)
-[](https://docs.rs/actix-http/2.2.0)
+[](actix_http)

[](https://deps.rs/crate/actix-http/2.2.0)
[](https://gitter.im/actix/actix-web?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Documentation & Resources
-- [API Documentation](https://docs.rs/actix-http)
+- [API Documentation](actix_http)
- [Chat on Gitter](https://gitter.im/actix/actix-web)
- Minimum Supported Rust Version (MSRV): 1.42.0
diff --git a/actix-http/src/header/common/mod.rs b/actix-http/src/header/common/mod.rs
index 83489b864..c3d18613c 100644
--- a/actix-http/src/header/common/mod.rs
+++ b/actix-http/src/header/common/mod.rs
@@ -3,7 +3,7 @@
//! ## Mime
//!
//! Several header fields use MIME values for their contents. Keeping with the
-//! strongly-typed theme, the [mime](https://docs.rs/mime) crate
+//! strongly-typed theme, the [mime] crate
//! is used, such as `ContentType(pub Mime)`.
#![cfg_attr(rustfmt, rustfmt_skip)]
diff --git a/actix-http/src/header/map.rs b/actix-http/src/header/map.rs
index 36c050b8f..e5c3df515 100644
--- a/actix-http/src/header/map.rs
+++ b/actix-http/src/header/map.rs
@@ -9,7 +9,6 @@ use http::header::{HeaderName, HeaderValue};
///
/// `HeaderMap` is an multi-map of [`HeaderName`] to values.
///
-/// [`HeaderName`]: struct.HeaderName.html
#[derive(Debug, Clone)]
pub struct HeaderMap {
pub(crate) inner: FxHashMap,
@@ -142,7 +141,6 @@ impl HeaderMap {
/// the values associated with the key. See [`GetAll`] for more details.
/// Returns `None` if there are no values associated with the key.
///
- /// [`GetAll`]: struct.GetAll.html
pub fn get_all(&self, name: N) -> GetAll<'_> {
GetAll {
idx: 0,
diff --git a/actix-multipart/README.md b/actix-multipart/README.md
index edb2e0020..f192d8773 100644
--- a/actix-multipart/README.md
+++ b/actix-multipart/README.md
@@ -2,7 +2,7 @@
## Documentation & community resources
-* [API Documentation](https://docs.rs/actix-multipart/)
+* [API Documentation](actix_multipart)
* [Chat on gitter](https://gitter.im/actix/actix)
* Cargo package: [actix-multipart](https://crates.io/crates/actix-multipart)
* Minimum supported Rust version: 1.40 or later
diff --git a/actix-web-actors/README.md b/actix-web-actors/README.md
index fb8c3a621..14e4c4cc2 100644
--- a/actix-web-actors/README.md
+++ b/actix-web-actors/README.md
@@ -2,7 +2,7 @@ Actix actors support for actix web framework [
+* [API Documentation](actix_web_actors)
* [Chat on gitter](https://gitter.im/actix/actix)
* Cargo package: [actix-web-actors](https://crates.io/crates/actix-web-actors)
* Minimum supported Rust version: 1.40 or later
diff --git a/actix-web-codegen/README.md b/actix-web-codegen/README.md
index 6eca847b8..50b4eb50b 100644
--- a/actix-web-codegen/README.md
+++ b/actix-web-codegen/README.md
@@ -11,7 +11,7 @@
## Documentation & Resources
-- [API Documentation](https://docs.rs/actix-web-codegen)
+- [API Documentation](actix_web_codegen)
- [Chat on Gitter](https://gitter.im/actix/actix-web)
- Cargo package: [actix-web-codegen](https://crates.io/crates/actix-web-codegen)
- Minimum supported Rust version: 1.42 or later.
diff --git a/actix-web-codegen/src/lib.rs b/actix-web-codegen/src/lib.rs
index af2bc7f18..1539c5e05 100644
--- a/actix-web-codegen/src/lib.rs
+++ b/actix-web-codegen/src/lib.rs
@@ -46,17 +46,15 @@
//! ```
//!
//! [actix-web attributes docs]: https://docs.rs/actix-web/*/actix_web/#attributes
-//! [main]: attr.main.html
-//! [route]: attr.route.html
-//! [GET]: attr.get.html
-//! [POST]: attr.post.html
-//! [PUT]: attr.put.html
-//! [DELETE]: attr.delete.html
-//! [HEAD]: attr.head.html
-//! [CONNECT]: attr.connect.html
-//! [OPTIONS]: attr.options.html
-//! [TRACE]: attr.trace.html
-//! [PATCH]: attr.patch.html
+//! [GET]: get
+//! [POST]: post
+//! [PUT]: put
+//! [DELETE]: delete
+//! [HEAD]: head
+//! [CONNECT]: connect
+//! [OPTIONS]: options
+//! [TRACE]: trace
+//! [PATCH]: patch
#![recursion_limit = "512"]
diff --git a/awc/README.md b/awc/README.md
index b97d4fa00..2a1e23001 100644
--- a/awc/README.md
+++ b/awc/README.md
@@ -3,14 +3,14 @@
> Async HTTP and WebSocket client library.
[](https://crates.io/crates/awc)
-[](https://docs.rs/awc/2.0.3)
+[](awc)

[](https://deps.rs/crate/awc/2.0.3)
[](https://gitter.im/actix/actix-web?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Documentation & Resources
-- [API Documentation](https://docs.rs/awc)
+- [API Documentation](awc)
- [Example Project](https://github.com/actix/examples/tree/HEAD/awc_https)
- [Chat on Gitter](https://gitter.im/actix/actix-web)
- Minimum Supported Rust Version (MSRV): 1.42.0
diff --git a/awc/src/ws.rs b/awc/src/ws.rs
index aa474697b..dd43d08b3 100644
--- a/awc/src/ws.rs
+++ b/awc/src/ws.rs
@@ -1,6 +1,6 @@
//! Websockets client
//!
-//! Type definitions required to use [`awc::Client`](../struct.Client.html) as a WebSocket client.
+//! Type definitions required to use [`awc::Client`](super::Client) as a WebSocket client.
//!
//! # Example
//!
diff --git a/src/config.rs b/src/config.rs
index 03ba82732..d3f1e6c16 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -141,7 +141,7 @@ impl AppConfig {
/// Server host name.
///
/// Host name is used by application router as a hostname for url generation.
- /// Check [ConnectionInfo](./struct.ConnectionInfo.html#method.host)
+ /// Check [ConnectionInfo](ConnectionInfo::host())
/// documentation for more information.
///
/// By default host name is set to a "localhost" value.
diff --git a/src/info.rs b/src/info.rs
index 1d9b402a7..975604041 100644
--- a/src/info.rs
+++ b/src/info.rs
@@ -174,7 +174,7 @@ impl ConnectionInfo {
/// Do not use this function for security purposes, unless you can ensure the Forwarded and
/// X-Forwarded-For headers cannot be spoofed by the client. If you want the client's socket
/// address explicitly, use
- /// [`HttpRequest::peer_addr()`](../web/struct.HttpRequest.html#method.peer_addr) instead.
+ /// [`HttpRequest::peer_addr()`](super::web::HttpRequest::peer_addr()) instead.
#[inline]
pub fn realip_remote_addr(&self) -> Option<&str> {
if let Some(ref r) = self.realip_remote_addr {
diff --git a/src/lib.rs b/src/lib.rs
index a8fc50d83..b8346d966 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -29,16 +29,16 @@
//!
//! To get started navigating the API docs, you may consider looking at the following pages first:
//!
-//! * [App](struct.App.html): This struct represents an Actix web application and is used to
+//! * [App]: This struct represents an Actix web application and is used to
//! configure routes and other common application settings.
//!
-//! * [HttpServer](struct.HttpServer.html): This struct represents an HTTP server instance and is
+//! * [HttpServer]: This struct represents an HTTP server instance and is
//! used to instantiate and configure servers.
//!
-//! * [web](web/index.html): This module provides essential types for route registration as well as
+//! * [web]: This module provides essential types for route registration as well as
//! common utilities for request handlers.
//!
-//! * [HttpRequest](struct.HttpRequest.html) and [HttpResponse](struct.HttpResponse.html): These
+//! * [HttpRequest] and [HttpResponse]: These
//! structs represent HTTP requests and responses and expose methods for creating, inspecting,
//! and otherwise utilizing them.
//!
diff --git a/src/middleware/logger.rs b/src/middleware/logger.rs
index b2e5c791f..061aac57d 100644
--- a/src/middleware/logger.rs
+++ b/src/middleware/logger.rs
@@ -82,7 +82,7 @@ use crate::HttpResponse;
///
/// # Security
/// **\*** It is calculated using
-/// [`ConnectionInfo::realip_remote_addr()`](../dev/struct.ConnectionInfo.html#method.realip_remote_addr)
+/// [`ConnectionInfo::realip_remote_addr()`](super::dev::ConnectionInfo::realip_remote_addr())
///
/// If you use this value ensure that all requests come from trusted hosts, since it is trivial
/// for the remote client to simulate being another client.
diff --git a/src/server.rs b/src/server.rs
index 3badb6e8d..2d04c6fc2 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -213,7 +213,7 @@ where
/// Set server host name.
///
/// Host name is used by application router as a hostname for url generation.
- /// Check [ConnectionInfo](./dev/struct.ConnectionInfo.html#method.host)
+ /// Check [ConnectionInfo](dev::ConnectionInfo::host())
/// documentation for more information.
///
/// By default host name is set to a "localhost" value.
diff --git a/src/service.rs b/src/service.rs
index a861ba38c..189ba5554 100644
--- a/src/service.rs
+++ b/src/service.rs
@@ -195,13 +195,13 @@ impl ServiceRequest {
self.0.match_info()
}
- /// Counterpart to [`HttpRequest::match_name`](../struct.HttpRequest.html#method.match_name).
+ /// Counterpart to [`HttpRequest::match_name`](super::HttpRequest::match_name()).
#[inline]
pub fn match_name(&self) -> Option<&str> {
self.0.match_name()
}
- /// Counterpart to [`HttpRequest::match_pattern`](../struct.HttpRequest.html#method.match_pattern).
+ /// Counterpart to [`HttpRequest::match_pattern`](super::HttpRequest::match_pattern()).
#[inline]
pub fn match_pattern(&self) -> Option {
self.0.match_pattern()
@@ -225,7 +225,7 @@ impl ServiceRequest {
self.0.app_config()
}
- /// Counterpart to [`HttpRequest::app_data`](../struct.HttpRequest.html#method.app_data).
+ /// Counterpart to [`HttpRequest::app_data`](super::HttpRequest::app_data()).
pub fn app_data(&self) -> Option<&T> {
for container in (self.0).0.app_data.iter().rev() {
if let Some(data) = container.get::() {
diff --git a/src/types/form.rs b/src/types/form.rs
index 2a7101287..82ea73216 100644
--- a/src/types/form.rs
+++ b/src/types/form.rs
@@ -35,7 +35,7 @@ use crate::{responder::Responder, web};
/// To extract typed information from request's body, the type `T` must
/// implement the `Deserialize` trait from *serde*.
///
-/// [**FormConfig**](struct.FormConfig.html) allows to configure extraction
+/// [**FormConfig**](FormConfig) allows to configure extraction
/// process.
///
/// ### Example
diff --git a/src/types/json.rs b/src/types/json.rs
index 081a022e8..83c9f21b0 100644
--- a/src/types/json.rs
+++ b/src/types/json.rs
@@ -31,7 +31,7 @@ use crate::{responder::Responder, web};
/// To extract typed information from request's body, the type `T` must
/// implement the `Deserialize` trait from *serde*.
///
-/// [**JsonConfig**](struct.JsonConfig.html) allows to configure extraction
+/// [**JsonConfig**](JsonConfig) allows to configure extraction
/// process.
///
/// ## Example
@@ -142,7 +142,7 @@ impl Responder for Json {
/// To extract typed information from request's body, the type `T` must
/// implement the `Deserialize` trait from *serde*.
///
-/// [**JsonConfig**](struct.JsonConfig.html) allows to configure extraction
+/// [**JsonConfig**](JsonConfig) allows to configure extraction
/// process.
///
/// ## Example
@@ -306,7 +306,7 @@ impl Default for JsonConfig {
/// Returns error:
///
/// * content type is not `application/json`
-/// (unless specified in [`JsonConfig`](struct.JsonConfig.html))
+/// (unless specified in [`JsonConfig`])
/// * content length is greater than 256k
pub struct JsonBody {
limit: usize,
diff --git a/src/types/path.rs b/src/types/path.rs
index dbb5f3ee0..640ff4346 100644
--- a/src/types/path.rs
+++ b/src/types/path.rs
@@ -15,7 +15,7 @@ use crate::FromRequest;
#[derive(PartialEq, Eq, PartialOrd, Ord)]
/// Extract typed information from the request's path.
///
-/// [**PathConfig**](struct.PathConfig.html) allows to configure extraction process.
+/// [**PathConfig**](PathConfig) allows to configure extraction process.
///
/// ## Example
///
diff --git a/src/types/payload.rs b/src/types/payload.rs
index fdc1f8c8a..acb8b9a82 100644
--- a/src/types/payload.rs
+++ b/src/types/payload.rs
@@ -111,7 +111,7 @@ impl FromRequest for Payload {
///
/// Loads request's payload and construct Bytes instance.
///
-/// [**PayloadConfig**](struct.PayloadConfig.html) allows to configure
+/// [**PayloadConfig**](PayloadConfig) allows to configure
/// extraction process.
///
/// ## Example
@@ -159,7 +159,7 @@ impl FromRequest for Bytes {
///
/// Text extractor automatically decode body according to the request's charset.
///
-/// [**PayloadConfig**](struct.PayloadConfig.html) allows to configure
+/// [**PayloadConfig**](PayloadConfig) allows to configure
/// extraction process.
///
/// ## Example
diff --git a/src/types/query.rs b/src/types/query.rs
index 7eded49c5..27df220fc 100644
--- a/src/types/query.rs
+++ b/src/types/query.rs
@@ -18,7 +18,7 @@ use crate::request::HttpRequest;
/// be decoded into any type which depends upon data ordering e.g. tuples or tuple-structs.
/// Attempts to do so will *fail at runtime*.
///
-/// [**QueryConfig**](struct.QueryConfig.html) allows to configure extraction process.
+/// [**QueryConfig**](QueryConfig) allows to configure extraction process.
///
/// ## Example
///