gpt4 book ai didi

apache - 使用多个重写规则?

转载 作者:行者123 更新时间:2023-12-02 00:42:00 28 4
gpt4 key购买 nike

我有一个简单的 .htaccess 文件,其中包含以下内容。

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?s=$1 [L]
</IfModule>

我想添加此规则。

RewriteRule ^p$ index.php?p= 

我尝试在下面执行此操作,但它不起作用。看来这两条规则都在运行。我尝试了几个不同的标志,但再次没有运气。有人可以告诉我如何让它工作吗?

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^p$ index.php?p=
RewriteRule ^(.*)$ index.php?s=$1 [L]
</IfModule>

最佳答案

您必须添加[L]标志才能在匹配时停止读取规则:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^p$ index.php?p= [L]
RewriteRule ^(.*)$ index.php?s=$1 [L]
</IfModule>

RewriteRule 标志提醒:

  • L = 最后一个。一旦匹配,就停止处理 RewriteRules。订单数量!
  • C = 链条。继续处理下一个RewriteRule。如果这条规则不匹配,则不会执行下一条规则。稍后详细介绍。
  • E = 设置环境变量。 Apache 有各种可能影响 Web 服务器行为的环境变量。
  • F = 禁止。如果此规则匹配,则返回 403-Forbidden 错误。
  • G = 走了。如果此规则匹配,则返回 410-Gone 错误。
  • H = 处理程序。强制处理请​​求,就像它是指定的 MIME 类型一样。
  • N = 下一个。强制规则重新开始并重新匹配。当心!可能会导致循环。
  • NC = 无情况。允许 [jpg] 匹配 jpg 和 JPG。
  • NE = 无法逃脱。防止将特殊字符(. ? # & 等)重写为其等效的十六进制代码。
  • NS = 无子请求。如果您使用服务器端包含,这将阻止与包含的文件匹配。
  • P = 代理。强制规则由 mod_proxy 处理。透明地提供来自其他服务器的内容,因为您的 Web 服务器会获取它并重新提供它。这是一个危险的标志,因为编写得不好的标志会将您的网络服务器变成开放代理,这很糟糕。
  • PT = 通过。在 RewriteRule 匹配中考虑 Alias 语句。
  • QSA = QSAppend。当原始字符串包含查询 ( http://example.com/thing?asp=foo ) 时,将原始查询字符串附加到重写的字符串中。正常情况下会被丢弃。对于动态内容很重要。
  • R = 重定向。提供到指定 URL 的 HTTP 重定向。还可以提供准确的重定向代码 [R=303]。与 RedirectMatch 非常相似,速度更快,应尽可能使用。
  • S = 跳过。跳过此规则。
  • T = 类型。指定返回内容的mime-type。与 AddType 指令非常相似。

摘自这篇(非常)完整的帖子: https://serverfault.com/questions/214512/everything-you-ever-wanted-to-know-about-mod-rewrite-rules-but-were-afraid-to-as

关于apache - 使用多个重写规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12155991/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com