2013-02-16 90 views
0

早安堆棧!我的網站是目前的結構是這樣的:.htaccess子目錄中的執行順序(wordpress/laravel)

  1. http://www.mywordpressite.com/
  2. http://www.mywordpressite.com/.htaccess
  3. http://www.mywordpressite.com/portal/
  4. http://www.mywordpressite.com/portal/.htaccess

我瞭解宇宙的是,如果我瀏覽到門戶網站,(4)」 .htaccess將被解析,而不是(或優先於)(2)的.htaccess。實際上,我觀察到,即使在導航到(3)http://www.mywordpressite.com/portal/時,來自(2)的.htaccess也正在接管。

正如你可以想像,根目錄是一個WordPress網站與標準的WordPress .htaccess文件:

/.htaccess

<files wp-config.php> 
Order deny,allow 
deny from all 
</files> 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

門戶是一個Laravel門戶,具有標準Laravel。 htaccess文件

/portal/.htaccess

<IfModule mod_rewrite.c> 
    Options -MultiViews 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

我注意到的是,如果我刪除(2)/.htaccess,突然間,所有東西都可以在門戶網站上運行,所以肯定會發生衝突。我不會在這裏發佈我的虛擬主機的東西,因爲兩個.htaccess的工作/做他們應該做的 - 只是不在同一時間:

/.htaccess重定向管道所有輸入的地方輸入不對應於index.php文件中的文件或目錄以便更好地解析。

/portal/.htaccess做了類似的事情。

我已經注意到的是,既.htaccesses,如果我瀏覽到,通常會通過門戶網站的.htaccess解析的路線,如http://www.mywordpressite.com/portal/this/is/a/route我最終從我WordPress的網站得到一個404(例如它將URL傳遞到wordpress根目錄的/index.php文件中),當然這個頁面在WP中不存在。

當我刪除wp /.htaccess時,當然wordpress不能正常工作,但突然之間,門戶網站的.htaccess開始正常工作,並通過將url參數傳遞到/ portal來觸發相應的路由/index.php進行處理。

這似乎倒退給我。有什麼建議麼?

+1

你有沒有嘗試從WP規則集中排除'/ portal',像這樣:'RewriteRule^index \ .php $ - [L]'下面的'RewriteCond%{REQUEST_URI}!/ portal [NC]',在門戶規則集中添加'/ portal',如下所示:'RewriteCond%{REQUEST_URI} ^/portal [NC]'?正如MikeAnthony所說,你必須在門戶規則集中添加'RewriteBase/portal'。 – 2013-02-16 23:51:56

回答

1

我覺得你的問題在於這樣一個事實:你忽略了在門戶網站訪問文件RewriteBase

RewriteBase /portal/ 

我不是一個超文本訪問的天才,所以我無法解釋發生了什麼當你離開它。但我相信這就是解決方案。