【问题标题】:htaccess: how to redirect requests to a subfolder without showing the subfolder itself in the URLhtaccess:如何将请求重定向到子文件夹而不在 URL 中显示子文件夹本身
【发布时间】:2015-01-16 20:04:19
【问题描述】:

正如本文的目标,我有一个主机,使我能够使用同一个主机配置多个域。

我的根文件夹是:/home/my_username/

在此文件夹中,我有 /public_html (/home/my_username/public_html/) 文件夹,我必须将必须从 Internet 访问的文件放在其中。

这类托管需要一个指向 /home/my_username/public_html/ 的主域(称为 http://principal-domain.ext

所有其他域将指向 /home/my_username/public_html/other-domain.ext/

因此,例如,如果我有三个域:

所以,最后,FOLDER STRUCTURE 是这样的

/home/
- my_username/  
  - public_html/  <- Here go files for principal-domain.ext
    - second-domain-folder/
    - third-domain-folder/

如果我想为 PRINCIPAL-DOMAIN.EXT 安装 WORDPRESS 怎么办

如果我想为 principal-domain.ext 安装 WordPress,此时我必须将 WordPress 的文件放入 /home/my_username/public_html/

这确实是一个不方便的文件夹结构,因为主 WordPress 安装与专用于其他域的子文件夹“混合”。

为了让我清楚,我会有一个这样的文件夹结构:

实际错误的不需要的文件夹结构

/home/
- my_username/
  - public_html/      <- **HERE GO FILES FOR PRINCIPAL-DOMAIN.EXT (WRONG!)**
    - second-domain-folder/     <- second-domain.ext folder
    - third-domain-folder/      <- third-domain.ext folder
    - wp-admin/                 <- principal-domain.ext WordPress folder
    - wp-content/               <- principal-domain.ext WordPress folder
    - wp-includes/              <- principal-domain.ext WordPress folder

相反,我想要的是下面这样的文件夹结构

我想要的文件夹结构

/home/
- my_username/
  - public_html/
    - principal-domain-folder/  <- principal-domain.ext folder
       - wp-admin/                <- principal-domain.ext WordPress folder
       - wp-content/              <- principal-domain.ext WordPress folder
       - wp-includes/             <- principal-domain.ext WordPress folder
    - second-domain-folder/     <- second-domain.ext folder
    - third-domain-folder/      <- third-domain.ext folder

这样我可以让我的文件夹结构井井有条。

问题

问题在于,使用上述文件夹结构,要访问 principal-domain.ext WordPress 安装,我必须使用 URL http://principal-domain.ext/principal-domain-folder,这不是一件好事。

我的问题

我唯一想获得的是能够使用 URL http://principal-domain.ext 而不是 http://principal-domain.ext/principal-domain-folder 访问 WordPress 安装的 principal-domain.ext。

我不想要重定向,而是将 URL 从真实路径 URL 重写为“显示”URL。我想从 URL 中删除文件夹 /principal-domain-folder/。

如何使用 .htaccess 文件来做到这一点?

我在 StackOverflow 和 Internet 上的其他网站上阅读了很多问题和相关答案,但我尝试过的所有解决方案都可以作为重定向。

似乎做我想做的事的极少数没有工作(循环错误,错误重定向等)。

更多,它们非常复杂,但我认为一个简单的重写不需要像我发现的 sn-ps 那样需要 7 个或更多的 RewriteRules。

有没有人可以帮助我获得我想要的东西?

我应该在我的 .htaccess 文件中加入哪些规则才能使用http://principal-domain.ext 之类的 URL 而不是 http://principal-domain/principal-domain-folder/ 访问 WordPress?

【问题讨论】:

    标签: apache .htaccess url-rewriting


    【解决方案1】:

    试试这些规则:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^principal-domain.ext
    RewriteCond %{REQUEST_URI} !^/principal-domain-folder/
    RewriteRule ^(.*)$ /principal-domain-folder/$1 [L]
    

    我测试了它,它对我有用。

    1. RewriteEngine on 规则用于启用 Rewrite
    2. RewriteCond %{HTTP_HOST} ^principal-domain.ext 规则用于过滤您的域。
    3. RewriteCond %{REQUEST_URI} !^/principal-domain-folder/ 规则用于拒绝访问 principal-domain-folder
    4. RewriteRule ^(.*)$ /principal-domain-folder/$1 [L] 规则是主要的 rewrite rule。请注意,它有一个 [L] 标志,这意味着它是 last 规则。

    此外,如果您需要,您可以在这些规则之后为其他域添加额外的规则。

    【讨论】:

    • 只有在有斜线时才对我有用。例如 domain.com/demo/ 但没有斜杠 domain.com/demo,我得到了 domain.com/domain.com/demo/ 有什么想法吗?
    • @AdrianRodriguez 您能否提供有关所需行为的更多详细信息?
    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 2015-12-01
    • 2017-12-05
    • 1970-01-01
    • 2013-10-19
    • 2015-05-30
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多