我正在开发一个非常复杂的项目,所以我想使用一个有意义的文件/文件夹结构。
我想要的文件夹/文件结构是:
.htaccess
/php/
/assets/
我想拥有人们可以访问的网页:
/php/views/pages/
我想知道是否可以仅使用.htaccess
将/php/views/pages
设置为“可见根”,例如,当人们访问http://mydomain.com/
时,他们将会查看http://mydomain.com/php/views/pages/index.php
,如果是的话,我该怎么做呢?
此外,是否可以使用/php/views/pages
规范化对.htaccess
的所有访问,并使用301重定向来停止在搜索引擎中编入索引的多个链接?
答案 0 :(得分:27)
DocumentRoot
只能在服务器和虚拟主机配置中使用,.htaccess必须是。
让我们在.htaccess
中添加指令RewriteEngine on
我假设你想让/ assets的请求通过
#if a match for asset is found, do nothing
RewriteRule ^assets/ - [L]
如果请求尝试直接访问/php/views/pages/
,请将其重定向到其规范版本
RewriteCond %{THE_REQUEST} php/views/pages/
RewriteRule ^php/views/pages/(.*) http://mydomain.com/$1 [R=301,L]
并添加规则以将其他所有内容映射到/php/views/pages/
RewriteCond %{REQUEST_URI} !php/views/pages/
RewriteRule ^(.*)$ /php/views/pages/$1 [L]
忘掉.htaccess文件并使用它。示例配置可能看起来像
# ~base stands for your original DocumentRoot
<VirtualHost *:80>
DocumentRoot ~base/php/views/pages
Alias /assets ~base/assets
# other configuration parameters
</VirtualHost>