2012-10-18 30 views
1

第一次在這裏,我有點mod_rewrite和正則表達式noob,所以請讓我知道如果我錯過了什麼。我在這裏和其他地方搜索了一整天,但沒有找到我所需要的。mod_rewrite:刪除www和重定向到文件夾,如果尚未在URL

我在尋找一套RewriteConds和的RewriteRules的,將完成以下任務:

  • 去除WWW,如果出現在URL
  • 重定向到一個文件夾中,在URL
  • 如果不存在
  • 保存URL

我已經安裝在特定的子文件夾一個Web應用程序的其餘部分(我們稱之爲/ web應用程序),它被配置爲要求沒有www的網址。如果他們包含www,它會給用戶帶來一個愚蠢的煩人信息。我可以深入該應用程序並對其進行重新編程,但我希望通過.htaccess和mod_rewrite爲用戶處理該問題,並且同時將它們轉儲到該文件夾​​中,如果他們忘記鍵入它,則使用301重定向執行所有操作。

例如,我想任何下列要求

http://www.mydomain.org/webapp/anything 
http://www.mydomain.org/anything 
http://mydomain.org/anything 

被重定向到

http://mydomain.org/webapp/anything 

很顯然,如果一個「正確」的網址(一個開始http://mydomain.org/webapp/)要求的,它不會被重寫。

我最好的猜測到目前爲止如下:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^www\.mydomain\.org$ [NC] 
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=302] 

RewriteCond %{REQUEST_URI} !^/webapp.*$ [NC] 
RewriteRule ^(.*)$ http://mydomain.org/webapp/$1 [R=302] 

這似乎根據http://htaccess.madewithlove.be/但在實踐中工作,沒有這麼多。

在此先感謝。

回答

0

這裏找到自己的答案:BowlerHat

是這樣的:

# First just remove the www 
RewriteCond %{HTTP_HOST} ^www\.mydomain\.org$ [NC] 
RewriteRule ^(.*)$ http://mydomain.org/$1 [L,R=301] 

# Now redirect into the folder 
RewriteCond %{REQUEST_URI} !webapp/ [NC]   # if the provided URI does not start with /webapp, 
RewriteRule (.*) http://mydomain.org/webapp/ [L,R=301]   # redirect user to /webapp/ root 

我決定,如果用戶試圖訪問mydomain.org/somethingsomething,只是將它們發送到webapp的根目錄,而不是/ webapp/somethingsomething。

0

嘗試:

RewriteCond %{HTTP_HOST} ^www\.mydomain\.org$ 
RewriteRule^mydomain.org/$1 [L,R=301] 

RewriteCond %{REQUEST_URI} !^/webapp.*$ 
RewriteRule ^/(.*) mydomain.org/webapp/$1 [L,R=301] 
+0

沒有骰子。留下'http://'部分意味着'www.mydomain.org'重定向到'www.mydomain.org/home/accountname/webapp/'。 'mydomain.org'顯示index.html文件,'mydomain.org/wrongpath'給404錯誤路徑。 – joshdutcher

相關問題