我需要检查文件夹中的UIRI是否包含任何查询参数,如果不包含,则添加查询参数并使用Apache重写规则在浏览器中重定向uri。 为此,所有以/abc/def/xyz/开头的url应该附加?v=2 ,如果还没有查询参数的话

例如,/ /abc/def/xyz/folder/test.pdf应该变成/abc/def/xyz/folder/test.pdf?v=2

但是/abc/def/xyz/folder1/test.pdf?v=3应该保持不变。

我可以使用下面的方法添加查询参数,但它会导致无限重定向。 那就是为什么我需要选择性重定向

RewriteRule ^abc/def/xyz/(.*) /abc/def/xyz/$1?v=2 [L,R=301]

以下内容不会使用查询参数将浏览器URL重定向到新URI:

RewriteRule ^abc/def/xyz/(.*) /abc/def/xyz/$1?v=2 [PT,L]

#1楼 票数:2 已采纳

您可以使用RewriteCond来检查查询字符串。 我想以下应该可以解决问题。 如果有查询字符串可用,它将跳过规则。 否则,它将附加查询字符串v=2

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^abc/def/xyz/(.*)$ /abc/def/xyz/$1?v=2 [L, R=301]

希望能帮助到你。

  ask by Riju Mahna translate from so

未解决问题?本站智能推荐:

1回复

Apache重写规则以将查询字符串添加到文件夹中的url

我需要使用Apache重写规则从具有查询参数的文件夹中追加所有url。 为此,所有以/abc/def/xyz/开头的网址都应附加?v=2 例如,/ /abc/def/xyz/folder/test.pdf应该变成/abc/def/xyz/folder/test.pdf?v=2 我尝试使
1回复

结合查询字符串和passthrough的重写规则不起作用

我试图将页面A重定向到查询字符串, pageA?queryString到pageB 。 但是在重定向时, pageB应该在内部重定向。 它应该通过,在URL中它应该显示pageA但在内部应该显示page B的内容 已经尝试过: 情况1: 输出: 抛出错误:找不到pageB
1回复

重写规则以重定向到SEO友好URL

我正在为使用下面的重写代码查询字符串的页面创建一个SEO友好的URL 但现在我想从非友好的URL重定向,即curr / certificate.php?id = 26到友好的一个,即证书/财务,如果有人来到非友好的URL 我尝试添加以下代码 但后来我得到了太多重定向错误。 有没有办
1回复

如何编写重写规则以将url转换为选择器

我有一个像下面这样的网址。 http://mywebsite.com/extractMe/test/id.html需要转换为http://mywebsite.com/extractMe/test.id.html即最后一个/test/id.html到/test.id .html在调用我的服务器之前将
1回复

htaccess重写规则以重定向除一个IP之外的所有IP

我需要在网站上进行维护,并且是唯一可以访问它的人。 我编写了以下重写规则: 我应该将除我(46.233.116.53)之外的所有IP重定向到维护页面,但不幸的是我也将其重定向。 我也尝试将规则包装在内 但是仍然没有运气。 我的托管服务商应该采取什么措施,因为他们似乎没有任何建议:(
2回复

使用查询字符串将旧网址的重写规则重定向到新网址

我徒劳地试图弄清楚为什么我的重定向无法正常工作。 这是我的htaccess文件的示例: 如您所见,该网站是多语言网站(site.com/fr/,site.com/cn/,...) 当我输入网址site.com/fr/store/category1/category2/时,它会将我重定向
1回复

Apache的重定向和重写规则

我试图在我的apache网络服务器上安装CalDAV客户端,但是我无法使用重定向和重写规则的组合来获取所需的URL。 我的Web服务器的文档根目录为/var/www ,日历文件存储在/var/www/agendav/web/public 。 如果通过浏览器进入<website>
2回复

重定向重写规则工作

重写 尝试下面的规则和其他,但似乎没有任何工作 这个工作但也扰乱了其他链接 还有其他页面包含about-us/pageid以及product/pageID ,这些页面不需要打扰我需要重定向此特定链接。