2014-01-05 32 views
1

對不起,如果這是一個重複的,但的確非常令人迷惑閱讀所有其他職位..如何在實際域中重寫mod?

這是laravel4框架

我知道,在離線狀態下,我們可以使用國防部重寫以虛擬主機,使目錄,如 c:/laravel4/publicc:/laravel4/public/posts

www.l4.com和運行在瀏覽器

www.l4.com/posts當我在哪能CH真正的域名託管它安格像 sample.com/laravel4/public/postssample.com/posts

在此先感謝您的幫助〜!

編輯: 對不起,我沒有提到我的操作系統它的Windows在我的本地計算機上,但在我的域帳戶它說,在Linux操作系統上使用PHP5.3

我原來的.htaccess這是下的公用文件夾這樣的代碼在它

<IfModule mod_rewrite.c> 
Options -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 
</IfModule> 

回答

1

how can I change something like sample.com/laravel4/public/posts into sample.com/posts

將此代碼放在您的DOCUMENT_ROOT/.htaccess文件:

RewriteEngine On 

RewriteRule !^laravel4/public/ /laravel4/public%{REQUEST_URI} [L,NC] 

如果你想要的網址爲:www.mydomain.com/laravel4/posts然後將這些代碼您的DOCUMENT_ROOT/.htaccess文件:

RewriteEngine On 

RewriteRule ^laravel4/((?!public/).*)$ /laravel4/$1 [L,NC] 
+0

雖然我嘗試了添加該功能,但無法正常工作 – Dora

+0

您是如何測試的?完整的網址無效? – anubhava

+0

確定原始URL是通過使用laravel4框架和.htaccess文件www.mydomain.com/laravel4/public/posts是在公共文件夾,我編輯我的職務也有在裏面的.htaccess部分代碼已經等權下在'^重寫規則的index.php [L]'我把你的'重寫規則!^ laravel4 /公//laravel4 /公共%{REQUEST_URI} [L,NC]'代碼然後嘗試,如果www.mydomain.com/posts工作,但沒有 – Dora

0

使用Laravel,你應該指向Apache將您的公用文件夾從它提供的網站,而不是Laravel的根的位置。

+0

我相信我明白你的意思,但這只是本地主機和使用虛擬主機,這是它的工作乾淨的網址在你的電腦不是嗎? 但我的意思是,如果我在活動域中託管,我如何縮短/清理網址? 對不起,如果我錯了我很新的MOD重寫 – Dora

+0

沒問題。你不需要對mod進行重寫(但是最好從你的URL中隱藏「index.php」),你只需要將你的文檔根目錄設置到你的Laravel公用文件夾。例如,如果您的Laravel位於c:\ laravel4上的Windows服務器上,則必須將您的Apache文檔根目錄設置爲c:\ laravel4 \ public,然後重新啓動Apache。 如果你想讓web服務器在posts文件夾中做些什麼,你應該寫一個Route來處理它。我假設你的帖子目錄裏只有鬆散的文件,你想提供服務? –

+0

我說的是在一個活躍的域中有一個乾淨的網址,而不是在家用電腦上,儘管我認爲它不應該涉及apache,不是嗎? – Dora

0

你需要啓用mod重寫,因爲前面的同事說,我會假設你使用的是linux(ubuntu),因爲你沒有指定你的操作系統。你可以在終端中輸入這個來啓用mod_rewrite。

sudo a2enmod rewrite 

然後重新啓動Apache

sudo service apache2 restart 

一旦做到這一點去

/etc/apache2/sites-available 

假設你使用Apache和一個Linux(Ubuntu的)服務器。外觀爲您的域名網站,或者如果你使用的是默認的主機,打開它,用你喜歡的文本編輯器,並改變這一行指向您的公共目錄

DocumentRoot /path-to-your-folder/public 

eg DocumentRoot /var/www/domain/public 

保存文件並與重啓apache命令;

sudo service apache2 restart 

你應該很好,沒有在你的網址輸入公開。

因此www.l4.com/public/posts現在將成爲www.l4.com/posts

+0

我想這是對本地使用,而不是設定的一個實際的活動域? – Dora