2013-05-08 87 views

回答

0

首先,根據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),也許還有一些博客文章(或者其他問題)。

+0

感謝您的解決方案,提示,解釋,甚至閱讀建議:-)是的,現在的工作! – FrankyTheDumb 2013-05-09 08:51:12

0

啓用mod_rewrite和。htaccess的通過httpd.conf,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄下:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule (?!^subdir/)^(.*)$ /subdir/$1 [L,NC] 
相關問題