2012-04-28 62 views
11

我正在研究一個非常複雜的項目,所以我想用一個合理的文件/文件夾結構。使Web根文件夾成爲.htaccess的子文件夾?

文件夾/文件結構,我想擁有的是:

.htaccess 
/php/ 
/assets/ 

我想有網頁,人們會在訪問:

/php/views/pages/ 

我想知道是否可以使用.htaccess/php/views/pages設置爲「可查看的根」,例如,當人們訪問http://mydomain.com/時,他們將查看http://mydomain.com/php/views/pages/index.php,如果是的話,我該怎麼去做呢?

此外,是否有可能使用.htaccess規範化所有對/php/views/pages的訪問,並且301重定向可以停止在搜索引擎中索引多個鏈接?

+0

爲什麼不能更改'DocumentRoot'指令? – 2012-05-03 00:16:29

回答

24

如果您沒有訪問您的主機配置

DocumentRoot只能在服務器和虛擬主機CONFIGS使用,它的.htaccess必須。

  1. 讓我們添加指令在你的.htaccess

    RewriteEngine on 
    
  2. 我假設你想通過

    #if a match for asset is found, do nothing 
    RewriteRule ^assets/ - [L] 
    
  3. 讓到/資產去請求如果請求試圖訪問/php/views/pages/直接將其重定向到其規範版本

    RewriteCond %{THE_REQUEST} php/views/pages/ 
    RewriteRule ^php/views/pages/(.*) http://mydomain.com/$1 [R=301,L] 
    
  4. ,增加一條規則。如果你有你的主機配置

    忘掉.htaccess文件,並用它獲得一切映射到/php/views/pages/

    RewriteCond %{REQUEST_URI} !php/views/pages/ 
    RewriteRule ^(.*)$ /php/views/pages/$1 [L] 
    

。示例配置可能看起來像

# ~base stands for your original DocumentRoot 
<VirtualHost *:80> 
    DocumentRoot ~base/php/views/pages 
    Alias /assets ~base/assets 

    # other configuration parameters 
</VirtualHost> 

+1

輝煌。獎金有一定的時間限制,所以我會在完成時將獎勵給你。非常感謝解釋性的答案。 – Avicinnian 2012-05-03 11:38:39

+0

很好解釋! – 2015-02-05 15:10:34

相關問題