Mod_Rewrite在URL中隐藏所有子目录的最简单方法

时间:2016-07-29 22:14:49

标签: apache mod-rewrite

我已将我的网站的所有代码存储在mywebfolder的文档根目录中。有许多子目录,例如mywebfolder/deals/.. mywebfolder/user/..等等。我目前正在使用mydomain.com托管我的网站。

我希望不会在任何时候显示mywebfolder,因为它是多余的,并且使我的网址不再需要更长时间且难以记住。我有一个mod_rewrite运行来完成这个,但只有当我去mydomain.com。 (即,它仅适用于文档根目录)。在我的000-default.conf文件中,我有以下内容:

    RewriteEngine On
    <Directory "/var/www/html">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            AuthType Basic
            AuthName "Restricted Content"
            AuthUserFile /etc/apache2/.htpasswd
            Require valid-user
            RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR]
            RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$
            RewriteCond %{REQUEST_URI} !^/mywebfolder/
            RewriteRule(.*) /mywebfolder/$1
    </Directory>

据我所知,当我导航到mydomain.com时,我的条件只会进行重写。无论如何,我可以轻松地将这些内容推断到整个网站,因此当导航用户从未在URL中看到/mywebfolder/时?或者我是否必须为每个目录创建一个目录块?

1 个答案:

答案 0 :(得分:1)

试试这个:

...
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$
RewriteRule /mywebfolder/(.*) /$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^mydomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mydomain\.com$
RewriteCond %{REQUEST_URI} !^/mywebfolder/
RewriteRule /(.*) /mywebfolder/$1