我試圖建立一個國防部重寫簡單地把這些鏈接:簡單的現代重寫
/index.php?page=home
/?page=home
到
/home
有人能告訴我如何做到這一點?當我們談論這個問題時,有沒有什麼好的資源可以閱讀mod重寫?迄今爲止我最大的掙扎是我沒有看到任何調試方法;事情或者工作,或者他們不工作。
我試圖建立一個國防部重寫簡單地把這些鏈接:簡單的現代重寫
/index.php?page=home
/?page=home
到
/home
有人能告訴我如何做到這一點?當我們談論這個問題時,有沒有什麼好的資源可以閱讀mod重寫?迄今爲止我最大的掙扎是我沒有看到任何調試方法;事情或者工作,或者他們不工作。
有很多種方法可以做到這一點。這其中將規則應用於任何不存在的文件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]
編輯:您可能需要在頂部加入RewriteEngine on
,這在雲中.htaccess
您的Web文檔根目錄。所有這些當然取決於您的虛擬主機是否允許使用htaccess(mod_rewrite)以及規則覆蓋文件是否應該命名爲.htaccess。兩者都很常見,所以它不應該是一個問題。
如果我明白了,您希望您的最終用戶輸入example.com/home
並將其重寫爲/index.php?home
?
RewriteEngine On
# /home or/get redirected...
RewriteRule ^(home)?$ /index.php?page=home [L,QSA]
要調試,您可以啓用RewriteLog
。但是,正如評論中所建議的那樣,它只能用於調試。最好禁用它或將生產級別設置得非常低。
RewriteLog "/path/to/logs/rewrite.log"
# Increase the log level (default 0, >4 gets pretty verbose)
RewriteLogLevel 3
RewriteRule .*\?page=(\w+)$ /$1/ [NC]
應該做的伎倆,但也許你可以更具體哪些情況下需要工作?
繼承人一個網站,你可以在htaccess的
非常感謝你閱讀起來,這是非常有幫助的。 – 2011-08-17 13:27:49
小方面說明 - `RewriteLogLevel 3`對於嚴重的重寫調試來說太低 - 它只會給你一個概覽,而不會涉及細節。要查看詳細信息,請使用級別9 - 它更加冗長。 – LazyOne 2011-08-17 13:53:01
我會爲這個關於RewriteLog的回答添加一個嚴重的警告,因爲如果你'忘記'它會成爲一個資源管理器,並且它真的不應該在較長時間內處於更高級別,因爲該文件將成爲千兆字節更大的快速... – sg3s 2011-08-17 16:35:53