2012-10-31 32 views
1

我是開發世界的新手。我拼命嘗試獲得良好的URL。我檢查了網站的類似問題,但我找不到我需要的。或者我做得不好。在「公共」文件夾中使用索引進行URL重寫

以下是這種情況:我爲index.php文件位於名爲Public的文件夾中的站點設置了一個項目。

更清晰,這裏是我現在已經到達建網站的首頁的網址: HTTP://域名Name.com/文件夾/網站名稱/公共

我的關注是關於文件夾Public:我不希望它出現在URL中。 這裏是我想獲得的網址: HTTP://域名Name.com/文件夾/網站的名稱

其實,我想這個URL允許獲得放置索引文件在「公共」文件夾中。

我無法訪問Apache配置(共享主機),因此我將一個.htaccess放置在項目中(例如:www/Folder/Name of the site /.htaccess)。這裏是它的內容:

Options -Indexes +FollowSymLinks +Multiviews 
RewriteEngine On 
RewriteBase /public/ 
RewriteRule ^(.*)$ index.html [NC,L] 

我現在做了一件非常簡單的事情,因爲我嘗試了很多沒有有效結果的事情。

回答

1

不是真的知道你正在嘗試做的,但如果你想刪除URL中出現的/public/路徑,您需要從所有的鏈接刪除,第二,關閉多視圖,這不是你想要的第三,當需要爲/public/提出請求時,您需要一個規則來外部重定向瀏覽器,然後您需要在內部重寫請求以指向公衆。

Options -Indexes +FollowSymLinks -Multiviews 
RewriteEngine On 

# externally redirect, must match against %{THE_REQUEST} 
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /public/ 
RewriteRule ^/?public/(.*)$ /$1 [L,R=301] 

# internally rewrite it back, but we must first check that it's pointing to a valid resource: 
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -d [OR] 
RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -s 
RewriteRule ^(.*)$ /public/$1 [L] 
+0

嗨喬恩。謝謝你的幫助。是的,我想刪除URL中的/ public /路徑以訪問主頁。我嘗試了你的解決方案,並得到了「403 Forbidden」的消息。我的.htaccess在良好的位置(在公共文件夾上方)?任何其他想法? – Wook

+0

@What htaccess文件(或至少是這些規則)需要位於文檔根目錄中的public *所在的目錄*中。 –

+0

鑑於網站的結構(www/Folder1/Folder-of-the-site),我認爲Document_Root代表文件夾www。無論如何,我把htaccess放在網站的文件夾(公衆所在的目錄),它不起作用。我仍然有「403」。 – Wook

相關問題