2015-12-26 202 views
-2

我正在使用AWS EC2實例來託管網站。我在/ var/www/html/xyz /目錄&下有安裝,因此如果我必須訪問網站主頁,我必須指定鏈接爲www.example.come/xyz。我希望www.example.com應該被重定向到www.example.com/xyz將URL重定向到另一個

任何想法如何將www.example.com自動重定向到www.example.com/xyz(httpd config或類似的東西) ?

我在網上查了一下,但大多數帖子都與子域重定向有關,例如,將admin.example.com重定向到www.example.com,這不是我的問題。

謝謝!

我的.htaccess文件是:

<IfModule mod_rewrite.c> 
RewriteEngine on 
# Some hostings require RewriteBase to be uncommented 
# Example: 
# Your url is http://www.yourcompany.com/xyz 
# So "RewriteBase" should be: 
# RewriteBase /xyz 

Options -MultiViews 
RewriteBase /xyz 

RewriteCond %{REQUEST_URI} ^api/(.*)$ [or] 
RewriteCond %{REQUEST_URI} .*/api/(.*)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .*api/(.*)$ api.php?_d=$1 [L,QSA] 

RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml)$ [or] 
RewriteCond %{REQUEST_URI} store_closed.html$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*?)\/(.*)$ $2 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L,QSA] 

</IfModule> 

回答

0

使用此代碼在您的htaccess文件,這將用戶的子文件夾重定向而不更改URL第www.domain.com

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.com$ [NC] 
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC] 

另一個方法與URL www.domain.com/subdir

RewriteEngine On 
RewriteRule ^$ /subdir[L] 
+0

我嘗試了上述兩個選項並重新啓動httpd,但它們不起作用。 的RewriteCond%{HTTP_HOST} ^(WWW \。)?域2 \ .COM $ [NC] 重寫規則!^子目錄/ /子目錄%{REQUEST_URI} [L,NC] 的RewriteCond%{REQUEST_URI} ^/$ RewriteRule(。*)/ subdir/[R = 301] RewriteRule^$/subdir [L] – AFH

+0

'重定向301 /路徑/到舊URL http://www.cyourdomain。com/path/to-Try this new-url' – KPK

+0

我給了重定向301 http://www.example.com/ http://www.example.com/xyz 但仍然當我輸入http:// www。 example.com,它仍然不會被重定向。 是否有您所指定的'的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME另一種方式來驗證我的任何變化的.htaccess越來越反射或不 – AFH

1

使用以下代碼創建新的.htaccess文件

RewriteEngine on RewriteCond %{REQUEST_URI} ^/$ RewriteRule (.*) /xyz/ [R=301]

你應該有支持mod_rewrite。

+0

在他的.htaccess文件中,他使用了'RewriteBase/xyz',所以這不起作用。你可能想告訴他他應該在webroot目錄中用你的內容創建一個新的.htaccess文件:) – hakre

+1

@hakre .htaccess文件被添加了。謝謝你:) – niteshd22

+0

你的意思是,如果我從文件中刪除RewriteBase並使用niteshd22 @更改它將工作?如果我創建一個新的.htaccess文件,那麼其他內容.htaccess文件包含哪些內容? – AFH

0

您可以使用根/ .htaccess中的以下代碼:

RedirectMatch ^/$ /xyz 

這將重定向

http://example.com 

http://example.com/xyz 

而且要重寫http://example.com/foohttp://example.com/xyz/foo,你可以使用mod_rewrite:

RewriteEngine on 


RewriteRule ^/?((?!xyz).*)$ /xyz/$1 [L] 
+0

我添加了RedirectMatch規則,但沒有工作。 更改規則後,我又重新啓動了httpd守護程序,但仍未收到重定向。 我想提出以下修改: RewriteEngine敘述上 ... – AFH

+0

@AFH您可以發佈有關你的currunt htaccess文件? – starkeen

+0

我已將文件內容添加到問題描述中 – AFH

0

希望這會有所幫助!

RewriteEngine on 
RewriteCond %{HTTP_HOST} domain\.com [NC] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ /subfolder/$1 [L] 

或本

Redirect 301 /path/to-old-url http://www.cyourdomain.com/path/to-Try this new-url 
1

另一種選擇是改變你的網站的文檔根目錄。如果你正在運行Ubuntu,你應該有一個文件/etc/apache2/sites-available/YOUR_SITE.conf(也許是default.conf)。只需編輯它並將DocumentRoot更改爲指向您的子文件夾。

相關問題