2012-11-12 85 views
5

我試圖在Zend站點的子目錄內運行非Zend php應用程序。我想繞過Zend應用程序中的.htaccess子目錄'/ branches'中的所有文件。到目前爲止,我找到的解決方案都沒有工作。這裏是目前的.htaccess文件:使用.htaccess繞過Zend Framework並在子目錄中運行不同的框架

RewriteEngine on 
RewriteBase/

# WWW Resolve 
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^web/content/(.*)$ http://www.domain.com/$1 [R=301,L] 

# Eliminate Trailing Slash 
RewriteRule web/content/(.+)/$ http://www.domain.com/$1 [R=301,L] 

# Route Requests 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

甚至可以在.htaccess中完成嗎?

+0

我在這裏沒有看到任何內容,表明您嘗試過任何與/分支有關的重寫規則您可以告訴我們您嘗試過哪些方法無效嗎?你是在尋找這些請求的直接傳遞,還是需要自己的重寫邏輯? –

+0

我想直通「/分支」中的任何內容。我試過以下幾種: 'RewriteRule!(branches)$ index.php - [NC,L]' 'RewriteRule^branches/$ branches/index.php [L,QSA]' 'RewriteRule^blog - [ NC,L]' 和這些的許多變化。 –

回答

1

我能解決這個問題不改變的.htaccess,而是隻把我的子目錄「/內容」中。

1

您目前有:

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

這是沒有意義的,因爲你的RewriteCond指定基本上沒有做實際的文件,目錄什麼,符號鏈接不會有任何效果。這是因爲,那個RewriteRule緊接着是規則,將所有東西都重寫爲index.php。

如果您的目的是指導一切,是不是文件的index.php的真實目錄的請求,你應該有這樣的事情:

RewriteCond %{REQUEST_FILENAME} -s 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ index.php [NC,L] 

,並添加忽略/branches的特殊情況只需添加一個條件是這樣的:

RewriteCond %{REQUEST_FILENAME} -s 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_FILENAME} !^branches/ 
RewriteRule ^.*$ index.php [NC,L] 
+1

這實際上是默認的Zend .htaccess。應用這些更改打破了Zend應用程序。 –

+0

[NC,L]意味着RewriteRule不會執行任何其他規則,所以是的,Ryan的原始htaccess確實有效。 –