Apache 重定向重写规则工作

Apache 重定向重写规则工作,apache,.htaccess,redirect,mod-rewrite,url-rewriting,Apache,.htaccess,Redirect,Mod Rewrite,Url Rewriting,重写 example.com/about-us?pageID=1 to example.com/about-us 在规则和其他规则下尝试过,但似乎没有任何效果 Redirect 301 /about-us?pageID=1 http://example.com/about-us 这一个工作,但干扰其他链接也 RewriteCond %{QUERY_STRING} pageID=1 RewriteRule (.*) http://example.com/about-us? [R=301,L]

重写

example.com/about-us?pageID=1 to example.com/about-us
在规则和其他规则下尝试过,但似乎没有任何效果

Redirect 301 /about-us?pageID=1  http://example.com/about-us
这一个工作,但干扰其他链接也

RewriteCond %{QUERY_STRING} pageID=1
RewriteRule (.*) http://example.com/about-us? [R=301,L]

还有其他一些页面带有
关于我们/pageid
产品/pageid
,这些页面不需要被干扰,我只需要重定向此特定链接。

您应该能够在
中使用此规则实现
example.com/about us

RewriteEngine On
RewriteRule ^about-us$ /about-us?pageID=1 [L]

在测试之前,请确保清除缓存。

您应该能够在
中使用此规则实现
example.com/about-us
。htaccess

RewriteEngine On
RewriteRule ^about-us$ /about-us?pageID=1 [L]

在测试之前,请确保清除缓存。

要重定向该特定URL(基本上只是删除查询字符串),您应该包括一个
重写规则
模式,以匹配URL路径(就像您对
重定向
指令所做的那样)

正如您所发现的,您需要使用mod_rewrite(即,
RewriteCond
)来匹配查询字符串

$1
只是对
重写规则
模式中匹配组的反向引用,即“关于我们”。这只是为了避免重复“关于我们”


测试前请清除浏览器缓存,因为较早的301s将被缓存。因此,使用临时(302)重定向进行测试通常更容易。

要重定向该特定URL(基本上只是删除查询字符串),您应该包括一个
重写规则
模式,以匹配URL路径(就像您对
重定向
指令所做的那样)

正如您所发现的,您需要使用mod_rewrite(即,
RewriteCond
)来匹配查询字符串

$1
只是对
重写规则
模式中匹配组的反向引用,即“关于我们”。这只是为了避免重复“关于我们”



测试前请清除浏览器缓存,因为较早的301s将被缓存。因此,使用临时(302)重定向通常更容易进行测试。

你想重定向或重写?重定向你想重定向或重写的链接?重定向链接否这不起作用我需要重定向/关于我们?pageID=1到/关于usPerhaps重写你的问题。考虑到上面写的是重写,然后是两个URL。不,这不起作用,我需要重定向/about-us?pageID=1到/about-usPerhaps重写你的问题。考虑到它说的是Rewrite后跟两个URL。始终清除缓存但没有riles规则不起作用RewriteCond%{QUERY_STRING}^pageID=([1]*)$REWRITERRULE^(.*$/关于我们?[L,R=301]你试过我回答中的指令了吗?您刚才引用的规则不太可能起作用,因为它们将使用查询字符串参数重定向每个URL。如果链接包含
.php
扩展名(即
/about us.php?..
),则上述指令不会起任何作用-或者您是说如果更改指令以匹配?只是你说你问题中的指令“起作用但干扰其他链接”。如果您问题中的指令“起作用”,那么这也应该“起作用”。确保浏览器缓存已清除(浏览器会硬缓存301s)。在
.htaccess
文件中是否有其他指令?在.htaccess RewriteCond%{QUERY\u STRING}pageID=1 RewriteRule(.*)中有许多重写规则?[R=301,L]将所有其他链接也改写为product?pageId=1至/关于USI如果我的回答中的指令/规则不是“做任何事情”,则可能与您现有的指令冲突。秩序很重要。请将您的
.htaccess
文件(在这些指令到位的情况下)添加到您的问题中。始终清除缓存但没有riles规则不起作用RewriteCond%{QUERY_STRING}^pageID=([1]*)$RewriteRule^(.*)/关于我们?[L,R=301]你试过我回答中的指令了吗?您刚才引用的规则不太可能起作用,因为它们将使用查询字符串参数重定向每个URL。如果链接包含
.php
扩展名(即
/about us.php?..
),则上述指令不会起任何作用-或者您是说如果更改指令以匹配?只是你说你问题中的指令“起作用但干扰其他链接”。如果您问题中的指令“起作用”,那么这也应该“起作用”。确保浏览器缓存已清除(浏览器会硬缓存301s)。在
.htaccess
文件中是否有其他指令?在.htaccess RewriteCond%{QUERY\u STRING}pageID=1 RewriteRule(.*)中有许多重写规则?[R=301,L]将所有其他链接也改写为product?pageId=1至/关于USI如果我的回答中的指令/规则不是“做任何事情”,则可能与您现有的指令冲突。秩序很重要。请将您的
.htaccess
文件(以及这些指令)添加到您的问题中。