2012-03-18 45 views
2

我有一臺運行在Windows機器上的Apache 2.2。Apache mod_rewrite - 重寫根本沒有發生

我想添加一些URL重寫指令,並以最簡單的理智開始 - 將每個URL重寫爲http://www.facebook.com

的httpd.conf,我已經添加了以下內容:

的LoadModule rewrite_module模塊/ mod_rewrite.so

,後來在該文件,執行以下操作:

RewriteEngine on

RewriteRul (。*)電子^ $ http://www.facebook.com [R]

重定向不會發生在所有的:當我訪問現有的文件,我得到他們。當我訪問不存在的地址時,我得到了服務器的404頁面

我嘗試了更復雜的重寫,結果相同。

可能是什麼問題?是否有任何日誌文件需要檢查有關重定向失敗的提示?謝謝!

+1

'#'是註釋字符。所以你沒有做任何事情。 – 2012-03-18 15:38:05

+0

我的不好 - 問題當然是指未評論的指令。 – Hatchmaster 2012-03-18 15:43:38

+0

你究竟在哪裏放置指令?它是否在'VirtualHost'塊中? – 2012-03-18 15:49:12

回答

1

你必須把AllowOveride AllVirtualHost部分

<Directory /path/to/your/www/> 
    AllowOveride All 
</Directory> 
+0

「AllowOveride All」與他的問題無關。事實上,「AllowOveride None」是Apache的默認設置,因爲前者允許包括.htaccess文件在內的所有內容,從而減慢了Web服務器的速度(因爲Apache將查找.htaccess文件,即使它們不存在於AllowOveride All中)。驚訝這起來了... – virtualeyes 2012-03-18 16:41:35

+0

@virtualeyes你一定不會配置。htaccess和讀取Apache文檔,驚訝與這種評論。 – Rezigned 2012-03-18 16:56:20

+0

確實,我不使用.htacess文件,因爲它們是性能問題。如果您閱讀Apache性能文檔,您也可以避免使用它們:「http://httpd.apache.org/docs/2.2/misc/perf-tuning.html」(請參閱​​AllowOveride部分)。此外,當他們的問題與此無關時,您不會建議其他人使用「AllowOveride All」;-)基本上,您實際上正在爲用戶創建問題,而不是幫助解決手頭的問題...... – virtualeyes 2012-03-18 17:06:40

0

你必須把一個虛擬主機內的重寫規則阻止

<VirtualHost lan-ip:80> 

ServerName mysite.com 
ServerAdmin [email protected] 
DocumentRoot /path/to/site 

RewriteEngine on 
RewriteRule ^(.*)$ http://www.facebook.com [R] 

</VirtualHost> 

其中LAN-IP可能是localhost,或者更可能,專門用於服務mysite.com的ip。對於本地devel的你可以別名你的網卡是說,192.168.1.101,並修改/ etc/hosts文件(在Linux上),像這樣:

192.168.1.101 mysite.com

然後你瀏覽器,你可以去mysite.com和測試本地測試實例。