如果你拥有一家提供WordPress网站构建服务的小型设计和web开发机构,你可能知道编辑默认WordPress的.htaccess文件是多么重要,以最大限度地提高网站的安全性和速度。然而,编辑.htaccess可能非常具有挑战性,特别是如果这对您来说是一个新事物。
继续阅读文章学习如何修改.htaccess文件而不破坏您的网站。这些规则适用于Apache服务器,但是你也可以把Apache .htaccess转换成NGINX服务器。
什么是.htaccess文件
.htaccess文件是Apache服务器器配置文件,包含处理和管理网站上某些内容的基本规则。.htaccess可用于许多有用的任务,如控制网站页面访问权限、使用密码保护管理区域、提高安全性、增强网站性能以及重定向用户等。
WordPress的.htaccess文件位于WordPress站点的根目录文件夹中。您也可以将其放置在其他任何文件夹中,以更改站点的行为并管理重定向。
为什么找不到您的WordPress站点上的htaccess文件?
有几种情况导致您在网站根目录下找不到.htaccess文件:
1.您的文件管理器软件将其隐藏。
2.它不存在。
要解决第一个问题,请更改FTP客户端设置。如果您使用的是FileZilla FTP程序,则可以查看.htaccess文件只需两个简单步骤:
1.在顶部的菜单栏中找到“服务器”选项。
2.选择“强制显示隐藏文件”
在WinSCP FTP中,
- 在顶部菜单栏中选择“选项”。
- 打开“首选项”选项并从左栏中选择“面板”。
- 选择“显示隐藏文件”.
至于第二个情况,系统可能还没有生成该文件。要解决此问题,请转到“设置”页面并单击“保存更改”,WordPress将尝试自动创建 .htaccess 文件。
然而,如果您没有文件权限,Wordpress可能无法自动生成.htaccess文件,这种情况下,拰需要自己创建这个文件,步骤如下:
将下面的代码复制粘帖到文本编辑器中,如Notepad:
但是,如果您有文件权限问题,WordPress可能无法生成.taccess。在这种情况下,您需要自己创建它。遵循以下步骤:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /live/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /live/index.php [L]
</IfModule>
# END WordPres
1.将此代码复制并粘贴到文本编辑器(如记事本)中:
2.将文档另存为.htaccess到本地磁盘上。
3.使用FTP客户端打开您的站点并从您的本地磁盘上载.htaccess文件
注意:如果无法上载文件,请更改根目录的文件权限。
在进行任何更之前改为什么备份很重要
现在您已经找到或创建了WordPress .htaccess文件,您可以开始编辑它。不过,首先要确保您已经制作了它的备份副本。如果不执行此步骤,如果在编辑时出现问题,则可能会丢失原始内容。
备份.htaccess文件,转到包含该文件的文件夹(/wp-content/htaccess- editor-backups/)并复制该文件。更改副本的名称,以免将其与已编辑的文件混淆。如果编辑顺利,您可以删除备份。如果出现问题,你可以回到基本的WordPress .htaccess文件并更改其代码。
如何编辑.htaccess 文件
您可以编辑默认的根目录中的.htaccess文件。这需要使用WordPress主机提供商的文件管理器或FTP客户端,如FileZilla或WinSCP。
首先登录您的web主机帐户。然后,打开“public_html”文件夹并找到。WordPress安装中的.htaccess文件。单击“查看/编辑”选项,在首选文本编辑器中打开文件并进行所需更改。
您还可以复制.htaccess文件并在本地系统中编辑它。完成更改后,可以使用FTP客户端或文件管理器替换实时版本。
.htaccess重定向
301 重定向
301重定向是一种永久重定向,告诉搜索引擎URL、文件夹、页面或网站已移动到其他位置。以下是允许重定向oldpage.html到newpage.html的规则:
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html
302重定向
302重定向是临时重定向。,您可将以下规则添加到.htaccess文件中应用它
Redirect 302 /oldpage.html http://www.yourwebsite.com/newpage.html
强制URL指向www
一旦你应用了这条规则,所有的example.com
网站访问者将被发送到www.example.com
:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
强制URL指向非www
这个wordpress .htaccess规则有相反的效果,当您添加了这条规则时,它将所有的访问者访问www.example.com
时转到example.com:
这是WordPress .htaccess规则具有相反的效果。添加后,它将强制所有访问者访问www.example.com
时使用example.com:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
强制 HTTPS
添加如下的规则到wordpress .htaccess文件中,强制访问者将将HTTP替换成HTTPS
将以下规则添加到WordPress .htaccess文件强制访问者将所有URL的HTTPS替换为HTTP:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
强制HTTP
这条.htaccess规则在WordPress中的功能与上一个规则相反。它强制网站访问者使用HTTP而不是HTTPS:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} ^https$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}</IfModule>
将域名重定向到子目录
要将域的根URL重定向到您选择的子目录,请将以下规则添加到WordPress.htaccess文件:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} !^/sub-directory-name/
RewriteRule (.*) /subdir/$1
重定向URL
如果需要将访问者从一个域名重定向到另一个,请使用以下 .htaccess 规则:
Redirect 301 / http://www.mynewwebsite.com/
.htaccess 安全配置
您还可以编辑.htaccess文件,保护服务器上的WordPress目录和文件。
保护 .htaccess
考虑到.htaccess文件可以潜在地控制整个站点,保护它不受未经授权的用户的攻击是至关重要的。使用此规则限制所有未经授权的访问者访问您的网站:
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
另一个需要保护的文件是wp-config.php。它包含主机和数据库凭据以及其他敏感数据。添加以下规则以防止黑客访问此文件:
<files wp-config.php>
order allow,deny
deny from all
</files>
为了保护你的网站.htaccess文件以及错误日志,wp-config.php和php.ini文件,请使用以下规则:
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>
确保将其中一个文件命名为php.ini。
限制访问WordPress管理面板
如果使用静态IP地址,可以使用以下规则阻止管理员仪表板:
ErrorDocument 401 /path-to-your-site/index.php?error=404
ErrorDocument 403 /path-to-your-site/index.php?error=404
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^IP Address One$
RewriteCond %{REMOTE_ADDR} !^IP Address Two$
RewriteCond %{REMOTE_ADDR} !^IP Address Three$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
如果您或您的任何客户端使用动态IP地址或多站点网络,但仍希望保护您的站点免受黑客攻击,黑客使用机器人程序访问管理仪表板或试图获取用户的登录详细信息,请添加以下规则:
ErrorDocument 401 /path-to-your-site/index.php?error=404
ErrorDocument 403 /path-to-your-site/index.php?error=404
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?your-site.com [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]
</IfModule>
保护 /wp-content/
wp-content是一个包含主题、插件、媒体和缓存文件的目录。该文件夹是黑客和垃圾邮件发送者的主要目标,因此他们将始终搜索访问该文件夹的方法。要保护wp-contnet不受未经授权的访问,请在wp-content文件夹中创建单独的.htaccess文件,并将以下代码粘贴到文件中:
Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>
仅保护wp-includes文件
wp-includes是第二个核心WordPress文件夹。它包含网站正常运行所需的文件和文件夹。使用此规则,您可以阻止对wp-includes目录的所有未经授权的访问:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
PHP文件访问限制
由于黑客可以使用PHP文件以恶意代码感染您的网站,因此阻止直接访问您的PHP文件至关重要:
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
禁用PHP执行
除了限制对PHP文件的直接访问外,还可以阻止未经授权的执行。如果黑客侵入了你的网站,他们将无法上传包含恶意代码的PHP文件。
添加以下代码以防止在uploads文件夹中执行PHP文件:
<Directory "/var/www/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>
脚本注入保护
黑客经常试图更改WordPress全局变量和_请求变量。有一种有效的方法来防止这种情况。将以下代码添加到。htaccess文件:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
阻止IP地址
通过修改WordPress .htaccess文件,也可以阻止IP地址。如果有人不断向你的网站发送垃圾邮件或进行黑客攻击,你将在WordPress管理面板中看到他们的IP地址。只需将此地址添加到下面的规则中。这样,您将拒绝他们访问您的站点:
<Limit GET POST>
order allow,deny
deny from INSERT_IP_ADRESS_HERE
allow from all
</Limit>
拒绝访问某些文件
如果要限制对某些文件的访问,请使用以下命令。访问规则:
<files your-file-name.txt>
order allow,deny
deny from all
</files>
禁用目录浏览
WordPress文件结构允许所有访问者在进入您的域时在前端查看您站点的目录。这样,网络罪犯就可以轻松地侵入你的基本文件。通过添加以下行阻止对网站目录的访问:
Options All -Indexes
.htaccess 规则提高网站性能
编辑WordPress的另一个好处是.htaccess文件允许您提高网站的性能。
Editing .htaccess to improve a website’s performance is like putting the cherry on the cake. Do it at the final tuning stage.
Dmitriy K., WordPress Lead Developer at PSD2HTML with over 10 years of experience
启用浏览器缓存
浏览器缓存存储浏览器下载以正确渲染网站的文件。这些文件可能是HTML、CSS和JavaScript文件,以及各种多媒体内容如图像。通过修改WordPress .htaccess文件,您可以设置以下规则以确定特定文件应缓存的时间:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!)
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
开启Gzip压缩
Gzip是一种有效的压缩算法。它可以通过定位和临时替换文本文件中的类似字符串来减小文件的总体大小。默认情况下,许多主机提供商使用Gzip作为加载速度优化工具。如果未包含在您的中.htaccess文档z中,您可以添加以下规则:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
控制/限制图像链接
每次外部资源请求映像时,您的服务器都会使用其带宽来交付映像。因此,图像热链接会显著影响站点的带宽使用。您可以通过向.htaccess文件中添加以下内容来减少带宽消耗:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
用插件编辑 .htaccess
WP Htaccess File Editor 是Htaccess文件编辑器插件,这可能是安全的最佳.htaccess编辑解决方案。如果通过cPanel或FTP客户端直接编辑文件,则可能会发生致命错误。不过有了这个插件,你不会有任何风险。它会自动扫描你的.htaccess文件并查找语法错误。
另外,每次编辑文件时,插件都会自动生成备份。这意味着即使在.htaccess文件中存在错误您将能够恢复您的网站。
结论
.htaccess文件在保持站点的可访问性和安全性方面起着至关重要的作用。它决定了服务器的运行方式和功能,因此您在编辑是必须非常仔细认真,避免出错。(via psd2html )