2017-07-02 244 views
0

注意:我寫了解決方案。不管怎樣,謝謝你。 :)

我知道它似乎重複的問題:我搜查了很多,我申請了數十個重寫規則,但他們不工作。htaccess重定向文件夾到子文件夾

我需要重定向從

www.domain.com/folder1 

www.domain.com/folder1/subfolderA 

注:文件夾1不能爲空。在子文件夾中我有index.html,index.php,css文件,js文件。如果我轉到「www.doman.com/folder1/subfolderA/」,我會看到一個簡單的網頁,其中包含index.php文件提供的正確的css和js。我的.htaccess文件是在www.domain.com/(我試圖把它放在folder1中,但它不起作用,甚至刪除「RewriteBase /」行)。文件permssions:0755.

「Option -Indexes」,「Option + Indexes」產生錯誤「選項索引不允許在這裏」,所以我刪除了它們。
「選項+ FollowSymLinks」生成錯誤「選項FollowSymLinks不允許在這裏」,我刪除它。

首先嚐試:無盡的網址

RewriteBase/
RewriteRule ^/folder1(/.*)?$ /folder1/subfolderA$1 [L,R] 
(rif: https://stackoverflow.com/a/32525136/1315873) ('R' is just for debug) 


結果:
www.domain.com/folder1/subfolderA/subfolderA/subfolderA/subfolderA/subfolderA/

第二個嘗試:添加停止無限循環的條件:

RewriteBase/
RewriteCond %{HTTP_HOST} !subfolderA [NC] 
RewriteRule ^/folder1(/.*)?$ /folder1/subfolderA$1 [L,R] 

適合http://htaccess.madewithlove.be/,但不適合我的服務器。 結果:
www.domain.com/folder1/subfolderA/subfolderA/subfolderA/subfolderA/subfolderA(不變)

第三次嘗試:使用$ '文件夾1'

RewriteBase/
RewriteCond %{HTTP_HOST} !subfolderA [NC] 
RewriteRule ^/folder1/$ /folder1/subfolderA/ [L,R] 

結果後:
Forbidden
Log說:找不到匹配的DirectoryIndex(index.html,index.htm,index.php,index.php3,index.phtml,index.shtml,index.wml),以及由選項禁止的服務器生成的目錄索引指令「

如果我添加到URL「index.php」或「index.html」的結果是「404找不到」(實際上是這樣)。

我不知道還能做些什麼。我希望在你的幫助下。
這是一個無法實現的重定向嗎?
謝謝。

回答

0

我覺得做的正確方法:P .htaccess文件是這樣的:

RewriteBase/
RewriteCond %{REQUEST_URI} !subfolderA [NC] 
RewriteRule ^/?folder1(/.*)?$ /folder1/subfolderA$1 [L,R] 

由於我不慣於改變網址的瀏覽器(必須看到「www.domain.com/folder1/」),我從最後一行刪除「,R」。

我希望它可以幫助別人。

+1

.htaccess不匹配前導斜槓,因此它必須是'RewriteRule^/?folder1(/.*)?$/folder1/subfolderA $ 1 [L]',以使其在Apache配置和.htaccess – anubhava

0

您可以創建文件夾1的的index.php或index.html網頁,將用戶重定向到subfolderA

e.g指數。PHP可以包含以下代碼

   <?php 
       header("location: subfolderA"); 
       ? > 
+0

我想過在php中使用'include',但我認爲它不會找到js和css文件(在subfolderA中,而不在folder1中)。如果它不會在瀏覽器中改變ulr,那麼它就是我的解決方案!謝謝 – Fil

+0

也許如果我明白你想要達到的目標,我可以提供更多的幫助,但是根據你的要求,如果有人被重定向到子文件夾A,那麼該文件夾中的「index.php」將顯示它的內容客戶端和該頁面肯定會訪問其所有依賴文件 – artie

+1

是的,你是對的,包括在這裏不工作。或者,您可以使用file_get_contents()從subfolderA獲取頁面,然後執行regex更改捕獲內容中的url,然後再將其輸出到客戶端。這樣,你保存瀏覽器的網址,並仍然顯示在子文件夾中的頁面A – artie

相關問題