- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试配置 Apache 重写规则。我的网站目录包含三个文件
index.html
index2.html
index3.html
我正在使用这些 Apache 重写规则:
RewriteRule index.html /index2.html [R=301,L]
RewriteRule index2.html /index3.html [R=301,L]
根据 Apache 关于 [L] option 的文档:
The [L] flag causes mod_rewrite to stop processing the rule set. In most contexts, this means that if the rule matches, no further rules will be processed.
因此,当我请求 index.html
时,我希望 index2.html
得到服务。然而,对 index.html
的请求最终出现在 index3.html
中。 [L]
选项不应该停止第二个 RewriteRule
的处理吗?
我使用的 Apache 版本是 2.4.39 (Fedora)。类似问题was asked here .
最佳答案
我意识到 .htaccess
中的规则会根据每个请求进行处理。当我访问 http://www.example.com/index.html
时会发生一些操作:
index.html
被请求.htaccess
中的第一条规则。它匹配 index.html
并重定向到 index2.html
。 [L]
停止处理后续规则index2.html
.htaccess
中的第一条规则。它无法匹配 index.html
,因此未应用标志 [R=301,L]
.htaccess
中的第二条规则。它匹配 index2.html
并重定向到 index3.html
。 [L]
停止处理后续规则我找到了两种可能的解决方案:
将重写规则从 /var/www/html/.htaccess
移至 /etc/httpd/sites-available/example.com.conf
。与针对每个请求进行处理的 .htaccess
不同,example.com.conf
仅在服务器启动时处理一次。
保留 .htaccess
中的规则,但使用 [END]
标志而不是 [L]
。
第一种解决方案的优点是规则只被处理一次。
关于Apache RewriteRule [L] 标志被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57243173/
将所有页面从旧域移动到新域时,我注意到有些人添加了 ^ 而其他不在 rewriterule 中 之间有什么不同 RewriteRule ^(.*)$ http://mynewdomain.com/$1
我正在尝试重写通过 BrowserSync 代理加载的站点的 HTML。 我有一个: ./src/search.txt -- 包含正则表达式匹配 ./build/replace.txt -- 包含网页
我正在尝试使用 mod_proxy 配置 Apache 2.4 作为反向代理,但我遇到了重定向未从源服务器传递到客户端的问题。 我在虚拟主机配置中有如下配置: [...] ProxyPreserveH
我对 apache2 进行了重写,以便根请求 "www.example.com"从缓存加载内容,但所有其他带参数的请求正常通过index.php "www.example.com/?action=1"
有没有办法在 .htaccess 中放置一个小的重写规则,以将超过 20.000 个链接从旧的基于 phpBB 的论坛重定向到新的 phpBB 论坛?旧链接是这样的: https://example.
我为我的页面设计了两个不同的 RewriteRules: # Enable URL Rewriting RewriteEngine on # exclude followed stuff Rewrit
我在通过 HTTP 主机名选择目录时遇到问题。 我有这样的文件结构: . +-- .htaccess +-- domains +-- 123456.a12.whatever.net |
我正在尝试通过 RewriteRule 创建一个友好的 URL但它一直忽略 #作为变量值的一部分。 .htaccess 上的行就这么简单 RewriteRule ^key/(.+)/$ index.p
我正在尝试创建一个 URL 短对于我的网站,任何请求到 example.com/u/* 应该改写为 example.com/cpp-cgi-test.cgi?* ! 注意:目录 /u 不存在,我将它添
当人们输入时,我想重定向到 new/index.php site.com site.com/index.php site.com/index.html site.com/index.htm 那么下面的
我正在对我的网站的新版本进行编程,并且我正在尝试让 .htaccess 正确重写。我的新网站存储在这里: www.example.com/storage/new/ 我需要重写这些 URL: www.e
在 Apache 2.4 中通过 ReWriteRule (mod_rewrite) 代理时无法控制超时。 ServerName xxxx Use ssl RewriteEngine O
标题基本概括了所有内容。 :-)我有很多虚拟主机,并且我想在httpd.conf文件的顶部放置一个重写块,以重写URL,无论请求可能指向哪个虚拟主机。我该怎么办? 我找到了this,但我的问题是相同的
目前我有一个文件夹 [contact-us] mydomain.com/contact-us/ 我计划删除此文件夹并仅添加 contact-us.php mydomain.com/contact-us
基本上我有下面的 htaccess。目前它运行良好,但它会重定向每个文件。例如,当我只想将 about.php 重定向到/about 时,foo.php 到/foo。基本上,我想强制删除 about.
RewriteCond %{QUERY_STRING} ^id=(.*)$ RewriteRule ^oldpage\.php$ http://new-site.com/newpage-%1 [R=
我有一台具有一个 IP 地址的虚拟服务器,为几个不同的站点提供服务。其中之一带有 SSL 证书。 我需要在第二个域上添加 SSL 证书供我自己私有(private)使用,由于我只有一个 IP 地址,所
我的网站根目录中有一个 .htaccess,如下所示: RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.mydomain\.pl [NC] Rewri
我有一个服务器,我想强制与外部世界进行 https 通信,但是,服务器上的某些服务需要由本地服务器上的进程通过 http 访问。 我尝试了以下方法: RewriteEngine On RewriteC
我在 apache 服务器上设置了一个站点,其中桌面站点位于/public_html 中,移动站点位于/public_html/mob 我正在尝试设置一个 .htaccess 重写规则,以便在用户访问
我是一名优秀的程序员,十分优秀!