2012-06-28 67 views
0

我在託管服務器上進行內部重寫時遇到問題。這在我的開發和測試服務器上完美工作,但是當.htaccess移植到生產共享主機時,內部重寫不會發生。在託管服務器上進行內部apache重寫的問題

.htaccess正在讀取(驗證) 重寫規則與'重定向'的作品,但內部重寫沒有。瀏覽器中的網址顯示正確的友好鏈接,但內部重寫沒有發生,我最終在主頁上。

這裏是一塊與重寫:

Options +FollowSymLinks -Indexes 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} -f [OR] 
RewriteCond %{SCRIPT_FILENAME} -d [OR] 
RewriteCond %{ENV:REDIRECT_STATUS} !^$ 
RewriteRule .* - [L] 
RewriteRule ^contact/$     index.php?pid=3 [QSA,L] 

所以我在瀏覽器URL將顯示www.mydomain.com/contact/但我在主頁。

如果我改變RewriteRule^contact/$到^ contact/$ http://www.mydomain.com/index.php?pid=3我得到重定向,但這不是我想要的..我想要內部重寫。

看着日誌,我沒有收到404,所以看起來我只是打到了目錄的根目錄。

任何想法??

謝謝! 韓紙

UPDATE:收到一封電子郵件,從託管服務提供商,說明他們不熟悉我重寫「風格」,這是他們建議什麼:

RedirectPermanent /contact/ http://www.mydomain.com/index.php?pid=3 

嗯...白癡。我希望我們能夠識別什麼阻止了我的重寫工作,所以我可以回頭看看他們。我猜這是Apache的配置問題?請幫忙。

回答

0

嘗試您的RewriteRule ^contact/$ index.php?pid=3 [QSA,L]規則時,我的Apache試圖將內部重定向到/full/filesystem/path/to/document/root/index.php,當用作URL路徑時,它當然不會映射到正確的位置。將目標更改爲/index.php?pid=3似乎可行。

+0

感謝您的評論。我嘗試更改^ contact/$ /index.php?pid=3 [QSA,L],但這不起作用。同樣的結果。 – hanji

相關問題