2012-04-14 86 views
0

我有一個國防部重寫工作本地主機,但不是在godaddy共享主機。godaddy - htaccess條件不起作用

Options -Multiviews 
Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}/WebShop/View/public%{REQUEST_URI} -f 
RewriteRule ^(.*)$ WebShop/View/public/$1 [L] 

RewriteRule ^(.*)$ entryPoint.php [QSA,L] 

問題在於RewriteCond部分。它無法在子文件夾中找到現有的文件。我嘗試了絕對路徑,相對路徑,rewritebase的一切,但都沒有奏效。 Godaddy不允許訪問rewritelog ...任何想法如何解決這個問題?

編輯:

htaccess的是在一個子文件夾,並且在文檔根是其將通過網絡域的請求到子文件夾一個htaccess的:

Options -Multiviews 
Options +FollowSymLinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$ 
RewriteRule ^(.*)$ %1/$1 [L,QSA] 

而真正的問題是,即在%{REQUEST_URI}中的子文件夾的htaccess的包含子文件夾的名稱太:S

EDIT2:

好吧,我有一個部分解決方案:

Options -Multiviews 
Options +FollowSymLinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$ 
RewriteCond %{DOCUMENT_ROOT}/%1/WebShop/View/public/%2 -f 
RewriteRule ^(.*)$ entryPoint.php?file=%2 [L] 

RewriteRule ^(.*)$ entryPoint.php [QSA,L] 

這將打印的文件名,如果存在,但它是一種笑話,因爲如果我更改第二個規則

RewriteRule ^(.*)$ x.php [QSA,L] 

那麼一切都將x.php。我想知道爲什麼國防部重寫永遠不會認出L旗?

(去喝啤酒)

回答

0

這是因爲某種奇怪的目錄設置的可能,但如果你重定向到一個子目錄GoDaddy的服務器上,你必須創建有一個空的.htaccess文件與RewriteEngine打開,否則它將無法正常工作。

在EDIT2部分前面的代碼工作得很好,但沒有一個GoDaddy的服務器上......這裏是它的文件訪問版本:

Options -Multiviews 
Options +FollowSymLinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$ 
RewriteCond %{DOCUMENT_ROOT}/%1/WebShop/View/public/%2 -f 
RewriteRule ^(.*)$ WebShop/View/public/%2 [L] 

RewriteRule ^(.*)$ entryPoint.php [QSA,L] 

我放在一個空的.htaccess文件RewriteEngine敘述與在「WebShop/View/public」目錄中,修復了L標誌問題。