2012-04-14 89 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标志问题。