我已经继承了一个现有的(和非常bug) www.example.com 。htaccess文件。
我一直试图谷歌它的不同部分,并在不同的文档,但有一些部分,我无法找到答案
我用过htaccess测试器,有些规则是符合的,但很多都不是测试器不能检查'ifmodule'语句,也不能理解CacheLookup上的
# BEGIN LSCACHE
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
<IfModule LiteSpeed>
RewriteEngine on
CacheLookup on
RewriteRule .* - [E=Cache-Control:no-autoflush]
RewriteRule \.litespeed_conf\.dat - [F,L]
### marker CACHE RESOURCE start ###
RewriteRule wp-content/.*/[^/]*(responsive|css|js|dynamic|loader|fonts)\.php - [E=cache-control:max-age=3600]
### marker CACHE RESOURCE end ###
### marker FAVICON start ###
RewriteRule favicon\.ico$ - [E=cache-control:max-age=86400]
### marker FAVICON end ###
### marker WEBP start ###
RewriteCond %{HTTP_ACCEPT} "image/webp"
RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]
RewriteCond %{HTTP_USER_AGENT} iPhone.*Version/(\d{2}).*Safari
RewriteCond %1 >13
RewriteRule .* - [E=Cache-Control:vary=%{ENV:LSCACHE_VARY_VALUE}+webp]
### marker WEBP end ###
### marker DROPQS start ###
CacheKeyModify -qs:fbclid
CacheKeyModify -qs:gclid
CacheKeyModify -qs:utm*
CacheKeyModify -qs:_ga
### marker DROPQS end ###
</IfModule>
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
# END LSCACHE
# BEGIN NON_LSCACHE
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
## LITESPEED WP CACHE PLUGIN - Do not edit the contents of this block! ##
# END NON_LSCACHE
#Begin Really Simple Security
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
#End Really Simple Security
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
第一,测试员说
RewriteEngine on
Only the last RewriteEngine line is taken into account
- 如果是,为什么要为每个标记的部分添加它?这个可以省略吗?*
此外,许多litespeed规则没有得到满足,但我也认识到有一些部分,它不能理解/看到
它看起来像是缺少了litespeed .htaccess and rewrite rules上设置的部分“示例规则”
为什么他们可能会改变“建议”示例规则的某些部分?我的档案上写着
RewriteCond %{HTTP_ACCEPT} "image/webp"
(这不能被测试者检查,因为变量对它是未知的),但是示例重写规则包括[或]。
RewriteCond %{HTTP_ACCEPT} "image/webp" [or]
还有,我不知道他们为什么决定包括if语句来检查哪个模块?* (有没有这些亲,或者这些'ifmodule'标签可以删除吗?)*
最后,这可能是一个愚蠢的问题-'**really simple SSL'与以前称为'really simple security'相同吗?**如果是,我应该更新我的。htaccess到真正简单的SSL。htaccess指南?
我希望这个线程也可以帮助其他人试图配置他们的网站.
1条答案
按热度按时间9udxz4iz1#
在我看来,他们决定安装很多不同的WordPress插件,每个插件都在
.htaccess
中添加了自己的部分。看起来没有人用任何计划构建这个配置。RewriteEngine On
被多次包含,因为每个插件都希望确保它被设置。拥有多个这样的语句除了占用空间和处理时间之外,不会造成任何伤害。IfModule
指令是由插件添加的,这样如果没有启用所需的Apache模块,网站就不会立即收到“500内部服务器错误”。如果没有模块,规则就没有任何作用,所以在知道启用了哪些Apache模块的机器上实现自己的规则时,添加模块检查几乎没有意义。我的猜测是,这些规则是由旧版本的插件添加的,而不是手工编辑的。可能有人试图自定义文件,但情况不一定如此。
我警告不要在
BEGIN
和END
注解之间进行太多编辑。插件将这些标记放在那里,以便它们可以在升级期间替换自己的规则。您所做的任何更改都可能在某个时候被覆盖。我建议看看网站实际需要哪些WordPress插件。看起来可能安装了多个缓存插件,它们可能相互冲突。首先,我将从提供您所需功能的最小插件集开始。
您应该升级所有插件以修补可能存在的安全漏洞,并确保每个插件的重写规则也更新到最新。