【问题标题】:Rewrite Problen .htaccess Redirect 301重写问题 .htaccess 重定向 301
【发布时间】:2015-06-08 07:25:00
【问题描述】:

我需要在网站上设置一个重定向,但遇到了一些问题。

我有这个原始的.htccess

RewriteEngine on
RewriteCond %{REQUEST_URI} \.json$ [NC]
RewriteRule .* - [F,L]
RewriteRule config/.* - [F,L]
RewriteRule config - [F,L]

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^.+$ - [L]

RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^([^?]+)$ /novo-site/index.php?url
RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^$ /novo-site/index.php

AddHandler php54-script .php
suPHP_ConfigPath /home/personalglass1/site02/novo-site/

我放了最后 4 行来为这 5 个页面提供重定向。

结果是这样的:

RewriteEngine on

RewriteCond %{REQUEST_URI} \.json$ [NC]
RewriteRule .* - [F,L]
RewriteRule config/.* - [F,L]
RewriteRule config - [F,L]

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^.+$ - [L]

RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^([^?]+)$ /novo-site/index.php?url=$1
RewriteCond %{QUERY_STRING} ^$ [NC]
RewriteRule ^$ /novo-site/

AddHandler php54-script .php
suPHP_ConfigPath /home/personalglass1/site02/novo-site/

Redirect 301 /sobre-a-personal-evolution /sobre/
Redirect 301 /fechamento-de-sacadas-e-varandas /produto/envidracamento/
Redirect 301 /revendedores-autorizados /revendedores/
Redirect 301 /entre-em-contato /contato/
Redirect 301 /fotos-de-sacadas-evolution /galerias/

但是当我请求页面时: http://example.com/sobre-a-personal-evolution

我收到了这个: http://example.com/sobre/?url=sobre-a-personal-evolution

但对我来说正确的是这个: http://example.com/sobre/

是第一个请求时我需要的最后一个。

我尝试了一些更改,但没有任何效果!

有人可以帮我解决这个问题并解释如何解决这个问题,我需要了解如何做到这一点。

谢谢!

【问题讨论】:

    标签: php apache .htaccess mod-rewrite redirect


    【解决方案1】:

    来自mod_alias/Redirect documentation

    匹配的 URL-Path 之外的附加路径信息将附加到目标 URL。

    “附加路径信息”有些模糊,但我认为它们指的是url 参数。

    现在,这根本不会影响功能,所以我再次假设您只是不喜欢 URL 的外观。

    不过,既然你无论如何都在使用mod_rewrite,那么你可以用RewriteRule达到与Redirect相同的效果:

    RewriteRule ^/sobre-a-personal-evolution(?:/(.*))?$ /sobre/$1 [R=301,L]
    

    【讨论】:

      【解决方案2】:

      您不得将mod_rewrite 规则与mod_alias 规则混用,并在内部重写规则之前保留重定向规则:

      RewriteEngine on
      
      RewriteRule \.json$ - [F,L,NC]
      
      RewriteRule config(/|$) - [F,L,NC]
      
      RewriteRule ^sobre-a-personal-evolution /sobre/ [L,NC,R=301]
      RewriteRule ^fechamento-de-sacadas-e-varandas /produto/envidracamento/ [L,NC,R=301]
      RewriteRule ^revendedores-autorizados /revendedores/ [L,NC,R=301]
      RewriteRule ^entre-em-contato /contato/ [L,NC,R=301]
      RewriteRule ^fotos-de-sacadas-evolution /galerias/ [L,NC,R=301]
      
      RewriteCond %{REQUEST_FILENAME} -f [OR]
      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^ - [L]
      
      RewriteCond %{QUERY_STRING} ^$
      RewriteRule ^(.+)$ /novo-site/index.php?url=$1 [L,QSA]
      
      RewriteCond %{QUERY_STRING} ^$
      RewriteRule ^$ /novo-site/ [L]
      
      AddHandler php54-script .php
      suPHP_ConfigPath /home/personalglass1/site02/novo-site/
      

      【讨论】:

        猜你喜欢
        • 2011-11-01
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多