相关疑难解决方法(0)

在 Apache 中重定向、更改 URL 或将 HTTP 重定向到 HTTPS - 关于 mod_rewrite 规则你想知道但又不敢问的一切

这是一个关于 Apache 的 mod_rewrite的规范问题

更改请求 URL 或将用户重定向到与他们最初请求的 URL 不同的 URL 是使用 mod_rewrite 完成的。这包括以下内容:

  • 将 HTTP 更改为 HTTPS(或相反)
  • 将不再存在的页面请求更改为新的替换。
  • 修改 URL 格式(例如 ?id=3433 为 /id/3433 )
  • 基于浏览器,基于引用者,基于月亮和太阳下的任何可能呈现不同的页面。
  • 任何你想弄乱 URL 的东西

关于 Mod_Rewrite 规则你想知道但又不敢问的一切!

我怎样才能成为编写 mod_rewrite 规则的专家?

  • mod_rewrite 规则的基本格式和结构是什么?
  • 我需要牢牢掌握正则表达式的什么形式/风格?
  • 编写重写规则时最常见的错误/陷阱是什么?
  • 什么是测试和验证 mod_rewrite 规则的好方法?
  • 我应该注意 mod_rewrite 规则对 SEO 或性能的影响吗?
  • 是否存在 mod_rewrite 看起来是适合这项工作的正确工具但不是的常见情况?
  • 有哪些常见的例子?

测试规则的地方

htaccess的测试网站是玩弄你的规则,并测试他们的好地方。它甚至会显示调试输出,因此您可以查看匹配的内容和不匹配的内容。

mod-rewrite redirect redirection 301-redirect apache-2.2

275
推荐指数
5
解决办法
11万
查看次数

ServerName 和 ServerAlias 如何工作?

这是我需要进一步说明的虚拟主机配置的以下部分:

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  ServerAdmin example@example.com
  ServerName  141.29.495.999
  ServerAlias example.com
...
Run Code Online (Sandbox Code Playgroud)

这是示例配置,类似于我目前拥有的(我目前没有域名)。

<VirtualHost *:80>- 允许在端口 80 上向可以联系到该服务器的 IP 发出的所有 HTTP 请求进行以下设置。例如,如果服务器可以通过多个 IP 访问,您可以将此指令限制为一个,而不是两个。

ServerName- 如果 HTTP 请求的主机部分与此名称匹配,则允许该请求。通常,这将是映射到 IP 的域名,但在这种情况下,HTTP 请求主机必须匹配此 IP。

ServerAlias - 服务器接受的备用名称。

对我来说,令人困惑的部分是,在上述情况下,如果我设置ServerAlias mytestname.com然后向 发出 HTTP 请求mytestname.com,则必须有一个指向服务器 IP 的 DNS 记录才能正常工作?在这种情况下,ServerAlias 只是基本上 EXTRA ServerName 条目吗?

假设我有一个 DNS 条目,foobar.com = 141.29.495.999但后来我有ServerName = 141.29.495.999并且ServerAlias是空的,这是否意味着尽管 foobar.com 被解析为正确的 IP,因为没有引用来接受 foobar.com in …

domain-name-system apache-2.2 apache-2.4

84
推荐指数
2
解决办法
25万
查看次数