重写问题.htaccess重定向301

时间:2015-06-08 07:25:00

标签: php apache .htaccess mod-rewrite redirect

我需要在网站上进行重定向并遇到一些问题。

我有这个原创.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 /

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

我尝试了一些改变,但没有任何作用!

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

谢谢!

2 个答案:

答案 0 :(得分:0)

来自mod_alias/Redirect documentation

  

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

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

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

但是,由于您仍在使用mod_rewrite,因此Redirect可以与RewriteRule达到相同的效果:

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

答案 1 :(得分:0)

您不得将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/