如何解决Apache mod_rewrite 使用 WordPress 阻止 HTTP OPTIONS 请求
我的 .htaccess 中有一个有效的 mod_rewrite cond/rule,它完美地停止了 HTTP OPTIONS 请求。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/constraint1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/startButton"
android:layout_width="203dp"
android:layout_height="110dp"
android:background="#02F837"
android:onClick="start"
android:text="Go!"
android:textColor="#000000"
android:textSize="50sp"
android:visibility="visible"
app:backgroundTint="#00F10A"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="OnClick"
android:layout_marginTop="200dp"/>
<TextView
android:id="@+id/timerTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#F4DC01"
android:gravity="center"
android:padding="5dp"
android:text="30s"
android:textColor="#000000"
android:textSize="35sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.046"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.029" />
<TextView
android:id="@+id/pointsTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#F4DC01"
android:gravity="center"
android:padding="5dp"
android:text="0/0"
android:textColor="#000000"
android:textSize="35sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.953"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.029" />
<TextView
android:id="@+id/sumTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#58F15E"
android:gravity="center"
android:padding="15dp"
android:text="31 + 12"
android:textColor="#000000"
android:textSize="35sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.03" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/constraint2"
android:layout_marginTop="50sp"
app:layout_constraintTop_toBottomOf="@id/constraint1">
<androidx.gridlayout.widget.GridLayout
android:id="@+id/gridLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="202dp">
<!--
Now you can add whatever button you want to add here
-->
</androidx.gridlayout.widget.GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
我也有 Apache 配置(用于腰带和背带):
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteRule .* - [F]
正如这里的最佳答案所建议的那样:Disable OPTIONS HTTP on Apache Server
但是,wordpress 将以下内容添加到同一个 .htaccess 文件中:
<Location />
<LimitExcept GET POST>
order deny,allow
deny from all
</LimitExcept>
</Location>
这样做会杀死我的 HTTP OPTIONS 杀手,正如对此请求的响应所示:
# 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
RewriteBase /
RewriteRule ^index\.PHP$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.PHP
</IfModule>
# END wordpress
我尝试将两个 mod_rewrite 规则组合成多种组合。我要么得到 500,要么 wordpress 网站运行良好并且 OPTIONS 请求得到尊重。
如何让 wordpress 网站正常工作,同时对 HTTP OPTIONS 请求发出拒绝响应?
解决方法
我发现通过在 WordPress HTACCESS 指令上方添加以下内容解决了该问题:
RewriteEngine on
RewriteCond %{THE_REQUEST} !^(POST|GET)\ /.*\ HTTP/1\.1$
RewriteRule .* - [F]
我在这里找到了这个建议: https://protonts.wordpress.com/2013/08/15/how-to-disable-http-options-method/
在这个阶段我不清楚为什么上面的方法有效,而下面的方法无效:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteRule .* - [F]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。