当前位置: 首页 > 知识库问答 >
问题:

.htaccess使用唯一url和查询字符串重定向

楮阳
2023-03-14

正在尝试重定向:

/category/unique-name?foo=123&bar=&abc=

到:

http://www.example.com/new/page

我读过的大多数文章都暗示要重定向多个页面的查询字符串模式。我只是想要一个需要重定向的页面。

我最近的尝试如下所示:

    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/category/unique-name/$
    RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
    RewriteRule ^(.*) $ http://www.example.com/new/page? [R=301,L]

非常感谢您的帮助!

更新日期:2017年4月7日

感谢所有的建议。我都试过了,有些导致错误500,有些没有效果。我已经列出了以下内容...

#不变

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/category/unique-name$
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^ http://www.example.com/new/page [R=301,L]

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/category/unique-name$
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^ http://www.example.com/new/page [R=301,L]

#误差500

RewriteEngine On
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page? [R=301,L]

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/category/unique-name/?$
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^ $ http://www.example.com/new/page [R=301,END,QSD]

RewriteEngine On
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page [R=301,END,QSD]

共有2个答案

邴兴为
2023-03-14

你的尝试近乎完美。请尝试以下两种稍加修改的备选方案之一:

办法1(旧):

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/category/unique-name/?$
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^ $ http://www.example.com/new/page? [R=301,L]

办法2(旧):

RewriteEngine On
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page? [R=301,L]

如果您操作的apache http服务器版本不太过时,您可以实现稍微干净的最终URL:

办法1(新):

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/category/unique-name/?$
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^ $ http://www.example.com/new/page [R=301,END,QSD]

方法2(新的):

RewriteEngine On
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^/?category/unique-name/?$ $ http://www.example.com/new/page [R=301,END,QSD]

如果这些导致超文本传输协议状态500(内部服务器错误),那么很可能您的超文本传输协议服务器版本确实太旧了,您必须坚持前两种方法中显示的工作。

然而,考虑到您实现外部重定向(R=301)的事实,我想知道这是否会起作用,是否真正实现了您试图实现的目标。。。

您自己的尝试(以及上面的修改版本)将传入的请求重写为干净URL外部的get参数。因此,它们会更改浏览器中可见的URL。这很好,但是:你的设置真的能够处理下一个进入/new/page的请求吗?

还有一个一般性提示:您应该始终希望将这些规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些文件是出了名的容易出错,难以调试,而且它们确实降低了服务器的速度。它们仅在您无法控制主机配置(读:非常便宜的主机服务提供商)或您的应用程序依赖于编写自己的重写规则(这显然是一个安全噩梦)的情况下作为最后一个选项提供。

姬慎之
2023-03-14

像这样试试,

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/category/unique-name$
RewriteCond %{QUERY_STRING} ^foo=123&bar=&abc=$
RewriteRule ^ http://www.example.com/new/page [R=301,L]
 类似资料:
  • 使用php或javascript或regex,是否有一个快速(希望是一行程序)从前一个(引用者)URL获取查询字符串? 从第二页...我想知道前面的查询字符串“One”。

  • 我试图使用AzureB2COAuth为Alexa帐户链接隐式流。下面是来自Alexa的重定向网址 https://alexa.amazon.co.jp/spa/skill/account-linking-status.html?vendorId=XXXXXXXXXX 但添加此选项会在AzureB2C应用中产生以下错误。 无法更新xxx-XXXXXX应用程序。错误详细信息:URL可能不包含查询字符串

  • 问题内容: 我需要的是将URL 的值转换成变量,然后在jQuery代码中使用它: 有谁知道如何使用JavaScript或jQuery来获取该价值? 问题答案: 这就是你所需要的:) 以下代码将返回一个包含URL参数的JavaScript对象: 例如,如果您具有URL: 此代码将返回: 您可以执行以下操作:

  • 问题内容: 从格式如下的URL查询字符串中获取参数的“较少代码”方法是什么? www.mysite.com/category/subcategory?myqueryhash 输出应为: 我知道这种方法: 问题答案: 包含您要查找的数据。 文件资料 **php.net:$** _SERVER-手册

  • 我的一个网站被黑了,然后成千上万的网址出现了。 我想编辑我的htaccess,以便所有有/?x=的URL都被重定向到没有查询字符串的页面。 该站点是word press站点,因此无法用查询字符串重定向所有URL或站点停止正常工作。 基本上我需要: 重定向到 和包含?x=的任何深度页 重定向到 这是我当前的htaccess 正如您所看到的,我已经设法将主url后面带有?x=的url重定向到主页面,但

  • 本文向大家介绍nodejs中转换URL字符串与查询字符串详解,包括了nodejs中转换URL字符串与查询字符串详解的使用技巧和注意事项,需要的朋友参考一下 一个完整的URL字符串中,从"?"(不包括?)到"#"(如果存在#)或者到该URL字符串结束(如果不存在#)的这一部分称为查询字符串. 可以使用Query String模块中的parse方法将该字符串转换为一个对象,parse方法的使用方式如下