我試圖重定向(mod_rewrite的)重定向/ cloack到子目錄
到
與 「/子目錄」 從用戶被籠罩。至少在他的網吧。
我想通了什麼根據我的基礎知識:
RewriteEngine on
RewriteRule ^(/(.*))?$ http://www.domain.com/subdir/$1 [P,L]
它的工作重定向的方面,但它不是cloacking。 任何提示?
我試圖重定向(mod_rewrite的)重定向/ cloack到子目錄
到
與 「/子目錄」 從用戶被籠罩。至少在他的網吧。
我想通了什麼根據我的基礎知識:
RewriteEngine on
RewriteRule ^(/(.*))?$ http://www.domain.com/subdir/$1 [P,L]
它的工作重定向的方面,但它不是cloacking。 任何提示?
首先,根據official mod_rewrite documentation,如果替代部分是絕對URL,則可能會發生外部重定向(導致URL在用戶瀏覽器中更改;但是,mod_rewrite應檢查該絕對URL是否與請求匹配並剝離這一部分,但我已經檢查了它的版本2.2和重定向發生)。
於是,一個想法是使用像/subdir/$1
這看起來不錯,相對URL,但它不能解決你的問題,因爲它沒有在所有的工作。
相反,我建議這樣的事情始終在內部添加subdir/
:
RewriteRule ^subdir/.* - [PT]
RewriteRule (.*) /subdir/$1
的簡短解釋:
/
不包括在該模式,造成這種圖案:
http://www.domain.com/
- >''
http://www.domain.com/dir1/file1.html
- >dir1/file1.html
subdir/
repeatingly /遞歸的第一條規則通過[PT]如果它尚未修改subdir/
請注意,這兩條規則總是在URL內部添加subdir/
(對用戶不可見)。如果您只是想將該部分添加到根目錄的請求中,那麼您當然需要修改規則 - 以獲得幫助,以便您可以澄清問題中的用例。
如果您打算更頻繁地使用mod_rewrite,我強烈建議您閱讀mod_rewrite documentation以獲得您的Apache服務器版本(我認爲您的情況爲2.0或2.2),也許還有一些博客文章(或者其他問題)。
啓用mod_rewrite和。htaccess的通過httpd.conf
,然後把這個代碼在你.htaccess
DOCUMENT_ROOT
目錄下:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase/
RewriteRule (?!^subdir/)^(.*)$ /subdir/$1 [L,NC]
感謝您的解決方案,提示,解釋,甚至閱讀建議:-)是的,現在的工作! – FrankyTheDumb 2013-05-09 08:51:12