- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 .htaccess 中有以下命令
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com [NC]
RewriteRule ^(.*?)-([a-z]+) %2/$1.$2 [L]
RewriteRule ^(.*?)-([0-9]+)([a-z]) %2/$1$3.$2 [L]
%2 在第二行及以后的行中不起作用。我可以为 %2 定义任何变量并在所有 RewriteRule 命令中使用它吗?以下命令有效
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com [NC]
RewriteRule ^(.*?)-([a-z]+) %2/$1.$2 [L]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com [NC]
RewriteRule ^(.*?)-([0-9]+)([a-z]) %2/$1$3.$2 [L]
但我想将 %2 用于多个规则行而不重复条件。
最佳答案
您可以使用 RewriteRule 标志 S|skip
将多个 RewriteRules 绑定(bind)到单个 RewriteCond(或一组 RewriteCond)。下面是将一个条件应用于三个规则的示例:
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
# skip rules if NOT within domain - only way to tie multiple rules to one cond
RewriteRule .? - [S=3]
RewriteRule ^path1(/.*)$ /otherpath1$1
RewriteRule ^path2(/.*)$ /otherpath2$1
RewriteRule ^path3(/.*)$ /otherpath3$1
要更改现有条件以适用于多个规则,您必须:
请注意,不可能在跳过的规则中使用任何指向 RewriteCond(如 %1)的反向引用。这些只能在跳过 RewriteRule 中访问。
关于apache - .htaccess 中单个 RewriteCond 的多个 RewriteRules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218164/
将所有页面从旧域移动到新域时,我注意到有些人添加了 ^ 而其他不在 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 重写规则,以便在用户访问
我是一名优秀的程序员,十分优秀!