使用.htaccess将web根文件夹设为子文件夹?

Avi*_*ian 13 directory .htaccess mod-rewrite

我正在开发一个非常复杂的项目,所以我想使用一个有意义的文件/文件夹结构.

我想要的文件夹/文件结构是:

.htaccess
/php/
/assets/
Run Code Online (Sandbox Code Playgroud)

我想要有人们可以访问的网页:

/php/views/pages/
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以将.htaccess其设置/php/views/pages为"可查看的根",例如,当人们访问时http://mydomain.com/他们将会查看http://mydomain.com/php/views/pages/index.php,如果是这样,我将如何进行此操作?

此外,是否可以规范化所有访问/php/views/pages使用.htaccess和301重定向以阻止多个链接在搜索引擎中编入索引?

nik*_*shr 28

如果您无权访问主机配置

DocumentRoot 只能在服务器和虚拟主机配置中使用.htaccess它必须是.

  1. 让我们在.htaccess中添加指令

    RewriteEngine on
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我假设你想让/ assets的请求通过

    #if a match for asset is found, do nothing
    RewriteRule ^assets/ - [L]
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果请求尝试/php/views/pages/直接访问,请将其重定向到其规范版本

    RewriteCond %{THE_REQUEST} php/views/pages/
    RewriteRule ^php/views/pages/(.*) http://mydomain.com/$1 [R=301,L]
    
    Run Code Online (Sandbox Code Playgroud)
  4. 并添加一个规则来映射其他所有内容 /php/views/pages/

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

如果您可以访问主机配置

忘记.htaccess文件并使用它.示例配置可能看起来像

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

    # other configuration parameters
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)