我的網絡路徑是: http://git.example.com/
(例如)的.htaccess重寫子目錄不工作
我的文檔根目錄是:
/home/user/git/
裏面的文檔根我有兩個文件夾:
/home/user/git/john
/home/user/git/doe
這些文件夾分別代表john和doe的git倉庫。它們託管在Web服務器上,以便代碼可以在創建之前進行測試,然後再提交給主服務器。
我遇到的問題是,回購站點中的站點代碼具有wordpress風格的.htaccess文件,以便腳本可以處理每個產品的數據庫中指定的所有頁面段落等。我有以下代碼在我的/home/user/git/john
目錄內的.htaccess文件:
RewriteEngine On
RewriteBase /john/
# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR]
RewriteRule ^.*$ - [L]
# ROUTE THROUGH CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
我也試圖改變rewritebase只是/
,我試圖改變最後一行RewriteRule . /john/index.php
和其中的所有變化。沒有我做的工作。
我的意思是不工作?那麼說,我有網址http://git.example.com/john/some_product_name.html
- 我得到一個404未找到錯誤,並且Apache錯誤日誌只有一個標準的404沒有這樣的文件的請求。而已。它就像「沒有屎這個文件不存在......當它找不到時,你應該重寫這個文件!」
無論如何,當所有操作都在根目錄之外時,這個確切的腳本完美地工作,因爲它在活動站點上,但是將副本移動到子目錄一直是個問題。我可以爲項目中的每個開發人員創建一個新的子域,然後從他們的doc_root中運行git,但真的......應該有一種方法可以使這項工作成爲可能。我錯過了什麼?
另外 - 我可以確認重寫沒有發生,因爲在我的index.php
文件的頂部,我有:echo "I'm here"; exit;
因此,而不是404未找到,我應該看到一個空白的白頁,並顯示消息「I在這裏「。我不。
**更新**
我註釋掉力通過線頂部這樣,它現在的工作:
RewriteEngine On
RewriteBase /john/
# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
#RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
#RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR]
#RewriteRule ^.*$ - [L]
# ROUTE THROUGH CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
世界爲什麼這些線路是造成這個問題?我訪問的網址絕對不符合這兩種模式!
爲第1規則按預期運行刪除最後一個[OR]。 – 2013-03-02 05:38:28
* facepalm *你可以回答這個問題,我可以接受嗎? – SublymeRick 2013-03-03 05:19:22