2012-08-22 78 views
0

我有一個.htaccess文件重寫.php.htmhtaccess重定向鬆散發佈數據!如何使用htaccess重定向時保留髮布數據?

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s([^\s]+)\.php\s 
RewriteRule .* %1.htm [L,R=301] 
RewriteRule ^(.*)\.htm$ $1.php 

重定向工作正常,但重定向失去了$_POST數據。如何在重定向時保留$_POST數據?

+3

只要規則只重寫URL並且不執行實際的重定向,'$ _POST'數據應該在重寫時保留。畢竟它仍然是相同的HTTP請求... – Lix

+0

你說你想將'.php'重寫爲'.htm',但似乎你正在做相反的...'RewriteRule ^(。*)\。 htm $ $ 1.php'會將'.htm' URLS更改爲'.php' URLS ...你確定你的問題完全反映你想要做什麼嗎? – Lix

+0

我想這兩個,重寫PHP到HTM和重定向PHP到HTM,如果用戶訪問該文件在PHP ..我需要保持$ _post數據,如果存在,同時從PHP重定向到HTM ..我希望我解釋正確.. –

回答

1

瀏覽器在重定向時將POST請求轉換爲GET請求。 RFC指出,如果方法需要更改,它們應該提示用戶,但是他們都不會遵循該方法,而是強制無條件地更改方法。

0

如果你想簡單地從.php文件的URL改寫爲.htm文件,所有你需要做的就是這樣的事情 -

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s([^\s]+)\.php\s 
RewriteRule ^(.*)\.php$ $1.htm 

三線.htaccess細節的流動行爲 -

  1. 打開重寫引擎
  2. 該請求與給定的正則表達式匹配。
  3. 重寫整個URL以使用.htm文件。
+0

I認爲你想做相反的...但這是你的問題所指出的... – Lix

+0

我需要這兩個,重寫和重定向,並保留$ _POST數據while redirct –