.htaccess 是一个分布式配置文件,它是 Apache 在每个目录的基础上处理配置更改的方式。
WordPress 使用此文件来操作 Apache 如何从其根目录及其子目录中提供文件。最值得注意的是,WP 修改了这个文件以能够处理漂亮的永久链接。
此页面可用于恢复损坏的 .htaccess 文件(例如行为不端的插件)。
基本可湿性粉剂 #
# BEGIN WordPress RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 重写规则。/index.php [L] # 结束 WordPress
多站点 #
WordPress 3.5 及更高版本 #
如果您在 WordPress 3.5 或更高版本上激活了多站点,请使用其中之一。
子文件夹示例
# BEGIN WordPress Multisite # 使用子文件夹网络类型:https: //wordpress.org/support/article/htaccess/#multisite RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\ .php$ - [L] # 在 /wp-admin RewriteRule 中添加一个斜杠 ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes) .*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule 。index.php [L] # 结束 WordPress多站点
子域示例
# BEGIN WordPress Multisite # 使用子域网络类型:https: //wordpress.org/support/article/htaccess/#multisite RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\ .php$ - [L] # 在 /wp-admin RewriteRule 中添加一个斜杠^wp-admin$ wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} - d RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule 。index.php [L] # 结束 WordPress多站点
WordPress 3.4 及以下 #
如果您最初使用 3.4 或更早版本安装了 WordPress 并激活了 Multisite,那么您需要使用以下之一:
子文件夹示例
WordPress 3.0 到 3.4.2
# BEGIN WordPress Multisite # 使用子文件夹网络类型: https://wordpress.org/support/article/htaccess/#multisite RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # 上传文件 RewriteRule ^([_0- 9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # 在 /wp-admin RewriteRule 中添加一个斜杠 ^([_0-9a -zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php )$ $1 [L] 重写规则。index.php [L] # 结束 WordPress多站点
子域示例
# BEGIN WordPress Multisite # 使用子域网络类型:https: //wordpress.org/support/article/htaccess/#multisite RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # 上传文件 RewriteRule ^files/(. +) wp-includes/ms-files.php?file=$1 [L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule 。index.php [L] # 结束 WordPress多站点
一般示例 #
选项 #
任何以+开头的选项都会添加到当前有效的选项中,而任何以–开头的选项都会从当前有效的选项中删除。
Options 指令的可能值是以下任意组合:
没有任何
所有选项均已关闭。
全部
除多视图外的所有选项。这是默认设置。
执行CGI
允许使用 mod_cgi 执行 CGI 脚本。
跟随符号链接
服务器将遵循此目录中的符号链接。
包括
允许 mod_include 提供的服务器端包含。
包括NOEXEC
允许服务器端包含,但禁用 #exec cmd 和 #exec cgi。
索引
URL 映射到一个目录,而不是 DirectoryIndex,一个格式化的目录列表。
多视图
使用 mod_negotiation 允许内容协商“MultiViews”。
SymLinksIfOwnerMatch
只关注目标属于与链接相同的用户 ID 的符号链接。
这将禁用所有选项,然后仅启用 mod_rewrite 所必需的 FollowSymLinks。
选项 无 选项 FollowSymLinks
目录索引 #
DirectoryIndex设置 Apache 在请求目录时将提供的文件。
可能会给出几个 URL,在这种情况下,服务器将返回它找到的第一个。
DirectoryIndex index.php index.html /index.php
默认语言 #
DefaultLanguage将导致所有还没有与之关联的特定语言标签的文件将使用它。
默认语言 a
默认字符集 #
设置在 HTTP 标头中发送的默认字符编码。请参阅:在 .htaccess 中设置字符集信息
AddDefaultCharset UTF-8
为特定文件设置字符集
AddType '文本/html; 字符集=UTF-8' .html
为特定文件设置
添加字符集 UTF-8 .html
服务器签名 #
ServerSignature指令允许在服务器生成的文档下配置尾随页脚行。可以选择在服务器生成的页面中添加包含服务器版本和虚拟主机名的行(内部错误文档、FTP 目录列表、mod_status 和 mod_info 输出等,但不是 CGI 生成的文档或自定义错误文档)。
上
添加一行,其中包含服务虚拟主机的服务器版本号和 ServerName
离开
抑制页脚行
电子邮件
创建一个“mailto:”对所引用文档的 ServerAdmin 的引用
SetEnv SERVER_ADMIN admin@site.com ServerSignature 电子邮件
强制下载文件 #
下面将导致对以指定扩展名结尾的文件的任何请求不会显示在浏览器中,而是强制“另存为”对话框,以便客户端可以下载。
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
HTTP 压缩 #
AddOutputFilter 指令将文件扩展名映射到过滤器,过滤器将在服务器响应发送到客户端之前对其进行处理。这是对其他地方定义的任何过滤器的补充,包括 SetOutputFilter 和 AddOutputFilterByType。此映射将合并到任何已经生效的映射,覆盖同一扩展已存在的任何映射。
另请参阅:https://developers.google.com/speed/docs/insights/EnableCompression
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0 [678] 无 gzip 浏览器匹配 \bMSIE !no-gzip !gzip-only-text/html
强制压缩某些文件
SetOutputFilter DEFLATE
发送自定义 HTTP 标头 #
Header 指令允许您为每个请求或特定文件发送 HTTP 标头。您可以使用Firebug、Chrome 开发工具、Wireshark或在线工具查看网站的 HTTP 标头。
标头集 X-Pingback "http://www.askapache.com/xmlrpc.php" 标头集内容-语言 "en-US"
取消设置 HTTP 标头 #
这将取消设置 HTTP 标头,使用always会更加努力地删除它们。
标头未设置 Pragma 标头始终未设置 WP-Super-Cache 标头始终未设置 X-Pingback
密码保护登录 #
这对于保护wp-login.php
文件非常有用。您可以使用这个htpasswd 生成器。
基本认证
AuthType Basic AuthName "Password Protected" AuthUserFile /full/path/to/.htpasswd 要求有效用户 满足所有
摘要式身份验证
AuthType Digest AuthName “密码保护” AuthDigestDomain /wp-login.php https://www.askapache.com/wp-login.php AuthUserFile /full/path/to/.htpasswd 要求有效用户 满足所有
需要特定 IP #
这是一种只允许某些 IP 地址被允许访问的方法。
ErrorDocument 401 默认 ErrorDocument 403 默认 Order deny,allow Deny from all Allow from 198.101.159.98 localhost
保护敏感文件 #
这会拒绝对您的 wp-config 文件、error_logs、php.ini 和 htaccess/htpasswds 的所有 Web 访问。
命令拒绝,允许 拒绝所有人
需要 SSL #
这将强制使用 SSL,并且需要确切的主机名,否则它将重定向到 SSL 版本。/wp-admin/.htaccess
在文件中很有用。
SSLOptions +StrictRequire SSLRequireSSL SSLRequire %{HTTP_HOST} eq "www.wordpress.com" ErrorDocument 403 https://www.wordpress.com
外部资源 #
- 官方 Apache HTTP 服务器教程:.htaccess 文件
- 官方 Htaccess 指令快速参考
- Htaccess 教程
- 面向开发人员的 Google PageSpeed
- 愚蠢的 Htaccess 技巧
- 高级 Mod_Rewrite