2012-04-28 63 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

相关问题