htaccess:如何将请求重定向到子文件夹而不在URL中显示子文件夹本身

时间:2015-01-16 20:04:19

标签: apache .htaccess url-rewriting

在本文的目标中,我有一个托管,使我能够使用相同的托管配置多个域。

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

在这个文件夹中,我有/ public_html(/ home / my_username / public_html /)文件夹,我必须把我的文件放在必须从互联网上访问。

这种托管需要一个指向/ 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/

如果我想安装WORDPRESS以获取PRINCIPAL-DOMAIN.EXT

如果我想为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,这不是一件好事。

我的问题

我唯一希望获得的是能够使用网址http://principal-domain.ext而不是http://principal-domain.ext/principal-domain-folder访问principal-domain.ext的WordPress安装。 < / p>

我不想重定向,而是从实际路径网址到“显示”网址重写网址。我想从URL中删除文件夹/ p​​rincipal-domain-folder /。

如何使用.htaccess文件执行此操作?

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

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

更多,它们非常复杂,但我认为这是一个简单的重写,因为这不需要7个或更多的RewriteRules,就像我在周围找到的片段一样。

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

我应该在我的.htaccess文件中使用http://principal-domain.ext而不是http://principal-domain/principal-domain-folder/等网址访问WordPress需要哪些规则?

1 个答案:

答案 0 :(得分:0)

请尝试以下规则:

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规则。
  5. 此外,如果您需要,可以在这些规则之后为其他域添加额外规则。