2012-05-18 75 views
0

在使用htaccess文件的Apache上遇到一些麻煩。 我有一個腳本,需要從兩個不同的虛擬子目錄訪問,這兩個虛擬子目錄都指向同一個地方。.htaccess,根據子目錄調整重寫基地

問題是,當我將重寫基地設置到一個位置,並嘗試訪問來自其他地方時,它有錯誤的變量。由於它是一個虛擬目錄,因此只有一個.htaccess文件,所以我需要一種方法讓我的htaccess文件知道它在訪問腳本時調用的目錄,以便我可以將腳本中的重寫基礎設置爲適當的虛擬目錄。

我正在爲此而絞盡腦汁。 這是我無法使用的代碼。 我試過了一些變化,我覺得我很接近,但我很難過。

  Options -Indexes 
      Options +FollowSymLinks 
      ErrorDocument 404 index.php 

      <IfModule mod_rewrite.c> 
       RewriteEngine on 

       RewriteCond %{DOCUMENT_ROOT} /$1 -f 
       RewriteBase /$1/ 


       RewriteCond %{REQUEST_FILENAME} !-f 
       RewriteCond %{REQUEST_FILENAME} !-d 
       RewriteCond %{REQUEST_URI} !=/favicon.ico 
       RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
      </IfModule> 

任何想法?

+0

在您的問題中發佈您當前的.htaccess。 – anubhava

+0

完成。編輯包含整個文件。 – Yitzhak

+0

我不認爲它是自RewriteBase的.htaccess的工作版本出現在RewriteCont之後並使用$ 1。 – anubhava

回答

0

竅門是讓RewriteBase使用/指向root。考慮你的根的.htaccess這樣的代碼$DOCUMENT_DIR下:

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

ErrorDocument 404 index.php 

## If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
## If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
## If the request is for a valid link 
RewriteCond %{REQUEST_FILENAME} -l 
## don't do anything 
RewriteRule^- [L] 

RewriteRule ^(?:vdir1|vdir2)/(.*)/?$ index.php?q=$1 [L,NC,QSA] 

這裏vdir1和vdir2是你的2個虛擬目錄。