首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使RewriteCond更改THE_REQUEST而不是REQUEST_METHOD

如何使RewriteCond更改THE_REQUEST而不是REQUEST_METHOD
EN

Stack Overflow用户
提问于 2013-09-19 11:28:35
回答 2查看 7.3K关注 0票数 2

我从网上得到了一条重写规则:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

这个规则工作得很好,但是现在当我试图发送一条POST消息时,这个规则也会重写要获取的方法。这是我的表格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form action="check.php" method="post">
<input type="text" name="email" id="email"/>
<input type='submit' value='check'>
</form>

这就是我从服务器上得到的(var_dump($_SERVER))

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
["REQUEST_METHOD"]=>
string(3) "GET"

我不太熟悉重写规则。您能告诉我如何修复它,以便它仍然处理php文件扩展名,但不会触及REQUEST_METHOD部件(从POST到GET)?

谢谢。

更新完整规则:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /


# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [L,NC] #[R,L,NC]


## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-19 12:22:26

您的.htaccess应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Options +FollowSymLinks -MultiViews 

RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

您不应该在.htaccess的条件和规则的相同行上使用注释,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteRule ^ %1 [L,NC] #[R,L,NC]

由于它将使.htaccess无法工作,所以注释应该总是在一个新的行上。

您的表单应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form action="http://domain.com/check" method="post">
<input type="text" name="email" id="email"/>
<input type="submit" value="check">
</form>

这应该正确地返回您想要的值作为POST方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
array(1) { ["email"]=> string(4) "text you typed on the input box" } 
票数 2
EN

Stack Overflow用户

发布于 2013-09-19 11:51:02

您正在进行重定向的R --所以您将投递到一个仅仅转储POSTed数据并重定向请求(HTTP )的位置。post应该指向/dir/foo,它可以传递给/dir/foo.php,但是当前的.htaccess不允许这样做。

您的表单应该如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<form action="/check" method="post">
      <input type="text" name="email" id="email"/>
      <input type='submit' value='check'>
</form>

下面是.php文件的内部路由示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f  # As long as it's not a file
 RewriteCond %{REQUEST_FILENAME} !-d  # As long as it's not a directory
 RewriteRule (.*) $1.php [L,QSA]

希望这能给你指明正确的方向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18903303

复制
相关文章
Apache rewrite Url
本文主要介绍Apache环境下,如何使用mod_rewrite模块完成URL重写功能。
黄啊码
2020/05/31
1.8K0
通过URL Rewrite来设置JBoss的301跳转
The rewrite valve implements URL rewrite functionnality in a way that is very similar to mod_rewrite from Apache HTTP Server.
EltonZheng
2021/01/26
3.6K0
RewriteCond RewriteRule
## Rules for TR and ES country sites RewriteCond %{REQUEST_URI} ^/(tr|es)$ [NC] RewriteRule ^(.*) https://xx.com [L,R=301] ##
全栈程序员站长
2022/09/01
2170
更聪明地学习,而不是苦读——《如何高效学习》
所以,需要持续大量学习的童鞋,比方说我等程序员们,除了要从知识的海洋中精挑细选出我们想要的内容,挑完了还得高效学习,不然成长的速度可能远远赶不上脱发的速度,沦落到「他变秃了,也没变强」的尴尬境地。
mzlogin
2020/05/21
6640
Rewritecond介绍
RewriteCond Syntax: RewriteCond TestString CondPattern [flags] RewriteCond 指令定义一条规则条件。在一条 RewriteRule 指令前面可能会有一条或多条 RewriteCond 指令,只有当自身的模板 (pattern) 匹配成功且这些条件也满足时规则才被应用于当前 URL 处理。 TestString 是一个字符串,除了包含普通的字符外,还可以包括下列的可扩展结构:
全栈程序员站长
2022/07/01
7990
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
wayn
2023/08/09
1K0
何时使用MongoDB而不是MySql
Apache中 RewriteCond 规则参数介绍[通俗易懂]
Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结果,这次我终于算大概知道它的意思了。 RewriteCond就像我们程序中的if语句一样,表示
全栈程序员站长
2022/06/29
4.7K0
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/06/26
3580
何时使用Kafka而不是RabbitMQ
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景
wayn
2023/08/28
3090
何时使用Elasticsearch而不是MySql
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/08/28
2640
何时使用Kafka而不是RabbitMQ
何时使用Elasticsearch而不是MySql
MySQL 和 Elasticsearch 是两种不同的数据管理系统,它们各有优劣,适用于不同的场景。本文将从以下几个方面对它们进行比较和分析:
wayn
2023/08/09
6950
何时使用Elasticsearch而不是MySql
做产品经理而不是功能经理
产品经理是个很奇怪的岗位,好像大多数人都能做,因为每个人对某个产品都有自己的看法,都能提出一些意见和想法,甚至能设计实现原理;也好像大多数人都做不好产品经理,因为互联网上成千上万个产品,大部分是垃圾,
用户1756920
2018/06/20
1.1K0
RewriteCond指令格式
语法: RewriteCond TestString CondPattern [flags]
全栈程序员站长
2022/07/01
2.5K0
WideNet:让网络更宽而不是更深
这是新加坡国立大学在2022 aaai发布的一篇论文。WideNet是一种参数有效的框架,它的方向是更宽而不是更深。通过混合专家(MoE)代替前馈网络(FFN),使模型沿宽度缩放。使用单独LN用于转换各种语义表示,而不是共享权重。
deephub
2023/08/30
2190
WideNet:让网络更宽而不是更深
android推荐使用dialogFrament而不是alertDialog
DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。 在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。 2、 好处与用法 使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且Dia
xiangzhihong
2018/01/29
2.4K0
android推荐使用dialogFrament而不是alertDialog
云原生关乎文化,而不是容器
本文译自 Cloud-Native Is about Culture, Not Containers[1],文章洋洋洒洒上万字,作者总结了她见过的云原生失败的各种经验教训,还用生动的示例说明了什么不是云原生。译者是在周末闲暇时间仓促间翻译的,其中难免有不当之处,请读者指正。译者:宋净超(Jimmy Song)
xcbeyond
2021/04/02
5050
使用 .htaccess 提高 WordPress 的安全性和可用性
.htaccess 是一个特殊的文件,它能改变服务器的设置,比如它可以定制 404 错误页面。
Denis
2023/04/15
6580
Apache规则RewriteCond详解
Apache中 RewriteCond语句对于我来说一直是个难点,多次试图去把它搞明白,都没有结构,这次我终于算大概知道它的意思了。
全栈程序员站长
2022/07/01
7900
如何给Linux系统换喜欢的背景色而不是黑色?
1、点击[命令行窗口] 2、点击[配色方案] 3、点击[编辑] 4、点击[背景] 5、点击[确定] 6、点击[确定] 7、点击[选项卡] 8、点击[设置颜色] 9、点击[红]
裴来凡
2022/05/28
2K0
如何给Linux系统换喜欢的背景色而不是黑色?
如何成为有创意的设计师,而不是艺术家?
看看Dribbble或Behance上的首页推荐,你就会发现各种色彩鲜艳、与众不同、布局精美的作品。尽管这些网站的商业定位是招聘设计师的地方,但现在太多太多的设计,都很“艺术”,而不是“设计”。
宇相
2019/03/19
4940
如何成为有创意的设计师,而不是艺术家?

相似问题

RewriteCond将获取主页的THE_REQUEST

20

理解THE_REQUEST变量在RewriteCond中的应用

12

RewriteCond忽略web而不是网站

10

Apache RewriteCond -本地工作,而不是主机

12

HTACCESS -如何使RewriteCond“剪切”URL地址

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文