2012-05-11 93 views
1

我編程的假301重定向在.htaccess擺脫301重定向

既然是永久性的,我的瀏覽器/代理重定向總是我到假地址,即使我在改變重定向位置的地址。 htaccess

我該如何擺脫這個舊/假301重定向?

設置事情很清楚:我知道如何在301中使用mod_rewrite .htacces。我想un-301

+1

瀏覽器緩存301爲您的每個URI本地重定向,因此您必須手動清除瀏覽器的緩存。但是,如果您想爲所有客戶端執行此操作,那麼我認爲您需要告訴這些瀏覽器使其緩存對所有受影響的頁面無效。 – anubhava

+0

請檢查:http://stackoverflow.com/questions/9131037/how-to-invalidate-web-browser-cache-content使瀏覽器緩存失效。 – anubhava

+0

@anubhava:對這種情況沒有幫助 - 他們正在更改內容的URL - yunzen想要更改內容並保留URL – symcbean

回答

1

它可以在htaccessmod_redirectmod_header完成。

神奇的是,您可以在Rewrite中使用修改器[E]設置環境變量,並在設置環境變量時設置非緩存頭。

下面的代碼

RewriteCond %{HTTP_HOST} !^mark\.koli\.ch [NC] 
## the [E=nocache:1] modifier sets the environment variable "nocache" 
RewriteRule ^/(.*)$ http://mark.koli.ch/$1 [R=301,L,E=nocache:1] 

## Set the response header if the "nocache" environment variable is set 
## in the RewriteRule above. 
Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache 

## Set Expires too ... 
Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache 

榮譽給Mark S. Kolich在他blog entry

當然,這之前應該重定向發生進行。所以在這之後,每一次301重定向都不會被緩存,並且可以在沒有模糊的情況下進行更改。

也許甚至可以通過apache_setenv用PHP設置環境變量。

1

這不取決於您的服務器配置,因爲瀏覽器/代理決定查詢您的網頁或使用緩存重定向。您應該清理(或關閉)您所談論的瀏覽器/代理中的緩存。如果您無法做到這一點,請等到緩存超時(取決於代理設置)到期。

+0

什麼可能是平均時間,代理將刷新? – HerrSerker

+0

@yunzen沒有線索。取決於設置。 –