2015-06-08 143 views
2

我需要在網站上放置重定向,並且存在一些問題。重寫問題.htaccess重定向301

我有這種原始.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/

是第一次請求時我需要的最後一個。

我試圖進行一些更改,但沒有任何作用!

有人可以幫我解決這個問題,並解釋如何做到這一點,我需要了解如何做到這一點。

謝謝!

回答

0

mod_alias/Redirect documentation:超越匹配的URL路徑

附加路徑信息將被附加到目標URL。

「附加路徑信息」有點含糊,但我認爲它們指的是url參數。

現在,這應該不會影響功能,所以我再次假設你只是不喜歡URL的外觀。

然而,由於使用的是mod_rewrite無論如何,可以實現如RedirectRewriteRule同樣的效果:

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

謝謝!這工作得很好。 – VinCardoso

0

你不能混用mod_alias規則mod_rewrite規則,並保持之前的內部重寫規則重定向規則:

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/