2017-04-06 54 views
2

也許有人可以幫忙。我嘗試重定向:重定向(htaccess)example.com/myproject到另一個子文件夾,但保持原來的url

www.example.com/myproject

www.example.com/projects/myproject

,但我想,原來保存的網址。

我現在的文件樹:

「/」 網絡空間根

「/網站」 這個目錄將被輸入www.example.com

「/網站/項目/ MyProject的叫「在這個文件夾中,我想重定向用戶,如果他們輸入的url字段」www.example.com/myproject「

我試過

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com/myproject$ [NC] 
RewriteRule^http://example.com/projects/myproject%{REQUEST_URI} [R=301,L] 

如果我打電話給「http://example.com/projects/myproject」,它將起作用。但不是「http://example.com/myproject」。

參數也應該使用像「?site = register」之類的原始URL。


編輯

我現在已經找到了解決自己:

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^myproject/?$ /projects/myproject/%1 [QSA,L] 
</IfModule> 

這工作得很好,並保留原始URL。

有一件事。可以匹配文件調用嗎?意思是:

工作網址:example.com/projects/myproject/css/main.css 通緝URL上述RewriteCondition:example.com/myproject/css/main.css

目前,它只能說明我index.php,但在URL中也保留「/myproject/css/main.css」。我想調用這個文件。同樣的js,pdf,less等等。

回答

0

%{HTTP_HOST}只包含主機名稱,而不包含REQUEST_URI,因此您無法在其中檢測myproject的存在。

我想這樣的事情就夠了:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^myproject/(.+) /projects/myproject/%1 [R=301,L,QSA] 
+0

嘿。它不工作: - /只是扔了一個404.我把RewriteRule改成了'RewriteRule^myproject /?$/projects/myproject [R = 301,L,QSA]',現在它可以工作,但不能保持原始URL。你能幫我嗎? – user6534746

+0

我現在發現了一個解決方案。你能檢查編輯的問題嗎? – user6534746

+0

我編輯了我的答案,確實有一個錯字:-)基本上,您需要在重寫規則的左側使用括號來指定'%1'指的是什麼。 – Capsule

相關問題