带查询字符串6165金沙总站

说明:
RewriteRule Pattern
在匹配时候不会对问号后面的查询字符进行处理,需要用一个%{QUERY_STRING}变量的RewriteCond指令。

注意事项

官方解释
Pattern不会按照查询字符串进行匹配。为了达到这个目的,你必须使用一个带有%{QUERY_STRING}变量的RewriteCond指令。当然,你也可以在替换字符串中创建包含查询字符串的URL:在替换字符串串中使用问号,以标明其后的部分应该被重新注入到QUERY_6165金沙总站,STRING中。而要删除一个已有的请求串,则可以用问号来终结替换字符串。为了联合新旧查询字符串,请使用[QSA]标志。

复制代码

其中www.metooshow.com为最终希望出现的域名,而mituxiu.com、www.mituxiu.com和metooshow.com都为希望被301跳转的域名。(子域名在计算权重的时候也被认为是独立的新域名,所以此方法也可用于不带www的域名和带www的域名之间的跳转)其中OR的含义为“或”,可以通过OR继续添加更多的域名。

RewriteCond % !-d

/index.php/index/supply.html?cid=101000
=》
/sell/list-101000.html

RewriteBase /

后来意识到可能是问号导致的问题,查一下资料发现确实是有问号导致的,修改后解决,代码如下:

 代码如下

配置代码可写在httpd.conf中,也可以写在.htaccess文件中,如果是wordpress用户,在修改.htaccess文件时候,记得将配置代码写在#
BEGIN WordPress和# END WordPress之外,否则会被wordpress设置时给覆盖。

RewriteEngine on

您可能感兴趣的文章:

  • Apache
    虚拟目录和默认首页的设置
  • Apache
    Rewrite实现URL的301跳转和域名跳转
  • windows中apache
    301页面跳转实现方法
  • 让apache显示目录列表的配置方法
  • apache设置自动将http跳转到https的方法
  • 禁止apache显示目录索引的常见方法(apache禁止列目录)
  • Apache
    mod_rewrite实现HTTP和HTTPS重定向跳转
  • Apache中使非伪静态url跳转到伪静态url的方法
  • Apache中解决动态地址跳转死循环的方法
  • Apache无法自动跳转却显示目录的解决方法

 代码如下

如果网站有多个域名,而又不希望分散权重,则可以通过开启Rewrite设置,将多个域名都301跳转到主域名之下,具体代码如下:

RewriteEngine On

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mituxiu.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.mituxiu.com [NC,OR]
RewriteCond %{HTTP_HOST} ^metooshow.com [NC]
RewriteRule ^(.*)$ http://www.metooshow.com/$1 [L,R=301]

# This .htaccess is puted into /diaries/

问号匹配问题的解决 这里来说一个实例吧…公司网站改版需要把收录的页面301到新地址上,在写Apache
Rewrite一个地址的时候怎么都搞不定。代码:

RewriteEngine On

需要主意的问题:
1、在新地址/sell/list-%1.html中需要使用%加序号来取得RewriteCond配置中的对应参数内容,而不是通常$(匹配RewriteRule中的内容)
2、新地址/sell/list-%1.html?中需要在尾部加上一个问号来终结查询字符串,否则会出现/sell/list-1000.html?cid=1000的情况。

 

 RewriteCond %{QUERY_STRING} ^cid=(.+)$
 RewriteRule ^/index.php/index/supply\.html$ /sell/list-%1.html? [R=301,L]

复制代码

整体url都发生了改变(域名没变),因为是lamp环境,所以想使用htccess来进行301重定向.网上找了下,有大致两种写法:

RewriteCond % !-f

# Control the page under /archives/goals/ 301 redirect to
/archives/diaries/

RewriteRule ^(.*)$ [R=301,L]

RewriteCond % !-d

后来发现,查询字符串和文件都是需要单独解析的,最终的写法为:

RewriteBase /

 代码如下

我的需求是把view.php?iid=123 301 到 /item/123

# 2007.07.14 12:00

 

# End

RewriteCond % rssAction.do

 

# This .htaccess is puted into /sitemaps/

RewriteBase /

 

RewriteRule ^([0-9] ).JSp$
[R=301]

# BEGIN WordPress

RewriteEngine On

RewriteCond % !-f

RewriteCond % rssAction.do

#把ab.cn的网址全部重定向到www.ab.cn下

4、在目录/goals/下,把/goals/1.JSp形式的URL重定向到/archives/diaries/1.htm

复制代码

 代码如下

1、根目录“/”下:

Rewrite 301
带查询字符串(参数)有需要了解的朋友可参考一下本文章。
整体url都发生了改变(域名没变),因为是lamp环境,所以想使用…

RewriteRule ^([0-9] ).JSp$
[R=301]

#把*.do形式的带查询字符串的URL重定向现在的网址

 代码如下

RewriteCond % !-d

复制代码

#如果你的apache版本>=2.4,可以使用QSD flag

# 2007.07.14 11:45

# 2007.07.14 10:40

RewriteCond % ^type=latestAdvices(. )$

 

# End

 

 

 代码如下

RewriteCond % dis(Goal|Diary)ContentAction.do

1.查询字符串使用的%做反向引用,正则表达式的使用和rewriterule中是一样的,%1表示除原字符串外第一个匹配,即%0为iid=123,%1为123
2.第二条中/item/%1?后面我加了个问号,这是因为我的apache版本是2.2,只有在2.4中才有flag
[QSD],这里添加了个空查询,可以获得最终的item/123的结果.如果你没使用QSD或者在后面加“?”你将得到的结果是/item/123?iid=123,因为301默认把查询字符添加上了

RewriteRule a.php b.php [L,R=301]

RewriteCond % ^ab.cn [NC]

RewriteCond % ^www.java.ab.cn$

# This .htaccess is puted into /archives/goals/

会变成这样的网址:

5、放在/java目录下,把域名java.ab.cn或www.java.ab.cn下的所有网址重定向到www.ab.cn

 代码如下

RewriteEngine On

复制代码

# Control the page like /diaries/103.JSp 301 redirect to
/archives/diaries/103.htm

复制代码

 代码如下

# End

RewriteEngine On

这种带有查询字符的链接怎么重定向呢?我尝试了以下两种但不可用:

htaccess Rewrite 301
带查询字符串(参数)有需要了解的朋友可参考一下本文章。

下面是学习日记Blog全套重定向方案。供自己备忘和需要的朋友参考。

# END WordPress

 

1.Redirect 301 ^view.php?iid=(d+)$ /item/$1
2.RewriteRule ^view.php?iid=(d+)$ /item/$1 [L,R=301]

复制代码

RewriteRule ^rssAction.do$ [R=301]

 

RewriteCond % !-f

 代码如下

1.RewriteCond %{QUERY_STRING} ^iid=(d+)$
RewriteRule ^view.php$ /item/%1? [L,R=301]

6、在目录/sitemaps/下,把/sitemaps/goal1-1.JSp形式的网址重定向到/archives/sitemaps/goal1-1.htm

我对apache的mod_rewrite并不熟悉,以上有些内容自己也是从别人那里抄来的,道理还不是很明白,也许还有错误。希望发现错误和需要改进的地方的朋友提示一下

 代码如下

2、在/archives/goals/目录下,把下面的URL重定向到/archives/diaries/下面:

RewriteRule ^(goals-1).JSp$
[R=301]

 代码如下

RewriteRule ^dis(Goal|Diary)ContentAction.do$
[R=301]

RewriteRule ^(.*)$ [L,R=301]

rewriterule方括号中为修饰符,详细的flag请看这里

RewriteRule . /index.PHP [L]

#除开*.do形式的URL(必须),其它是wordpress添加的用来实现动态网址伪静态化的,具体实现原理不懂

RewriteCond % !-d

RewriteBase /

 

复制代码

1.#第一种
Redirect permanent a.php b.php
#或
Redirect 301 a.php b.php
#第二种

RewriteRule ^brot.*        [R=301,L]

# 2007.07.14 11:34

RewriteCond % ^((([a-zA-Z] )=([0-9a-z]*)&)*)goalID=([0-9]
)((&([a-zA-Z] )=([0-9a-z]*))*)$

 

 

# Control the page like /goals/1.JSp 301 redirect to
/archives/diaries/1.htm

RewriteCond % !-f

复制代码

#RewriteRule ^view.php$ /item/%1 [L,R=301,QSD]

RewriteBase /

3、在目录/diaries/下,把/diaries/103.JSp形式的URL重定向到/archives/diaries/103.htm

复制代码

RewriteCond % ^java.ab.cn$ [OR]

RewriteRule ^rssAction.do$ [R=301]

如这样的规则

RewriteRule ^(goal[0-9] -1).JSp$
[R=301]

# End

# Control the page like /sitemaps/goal1-1.JSp 301 redirect to
/archives/sitemaps/goal1-1.htm

RewriteCond % !-f

# This .htaccess is puted into /goals/

复制代码

 代码如下

 

当遇到这样的网址时,就自动带上参数

RewriteCond % !-d

RewriteCond % ^type=latestDiaries(. )$

RewriteRule ^(.*)$ [R=301]

其中,带查询字符串的重定向写法很不好找,花了我好多天时间,问了三个论坛,查了N多网页也没有结果。有朋友还下了一个结论:“除非用程序,否则不可能实现这个需求”。最后用“RewriteCond
%”为关键字在google.cn上搜索,才在Module mod_rewrite:Rewriting URLs With
Query Strings和mod rewrite query string
problem找到一点线索,花了一个下午来调试才成功的。得来不易啊。

复制代码

 

做htaccess 中
rewrite规则时,其中301跳转,发现跳转后的网址自动加上了参数传递,也就是Querystring。

QSD = qsdiscard 删除查询字符串(apache 2.4以后新加)
QSA = qsappend 添加查询字符串(这个比较常用)

RewriteCond % !. .do