0

我的 public_html 文件夹是 /domain.com/public_html/ 但我希望 htaccess 将它们重定向到文件夹 /domain/public_html/www/ 但仍然有 domain.com 作为域而不是 domain.com/www 。

编辑:我希望 public_html 中的子文件夹 www 是默认根目录,而不是 public_html 本身

对此有任何解决方案吗?

这是我目前的 htacess

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
<IfModule mod_rewrite.c>
    RewriteEngine On    
    RewriteRule ^(.*)$ www/$1 [NC,L]
</IfModule>
4

2 回答 2

5

如果您只能使用.htaccess,那么这个简单的应该可以做到;

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1 [QSA]

解释;

RewriteEngine on                      # Turn on mod_rewrite functionality
RewriteCond %{REQUEST_URI} !^/www/    # Don't rewrite requests that are 
                                      # already to the /www/ directory. 
                                      # If this isn't here, we'll go into
                                      # a neverending loop.
RewriteRule ^(.*)$ /www/$1 [QSA]      # Rewrite all else to the www subdirectory
                                      # QSA = keep the query string.

编辑:没有看到您现有的 htaccess,这(减去多余的 RewriteEngine 语句)可能应该放在最后而不是整个 IfModule 块。

于 2012-10-05T12:44:42.297 回答
0

尝试将其放在public_html文件夹的 htaccess 中:

<IfModule mod_rewrite.c>
    RewriteEngine On    
    RewriteRule ^(.*)$ www/$1 [NC,L]
</IfModule>

或者

编辑 apache 配置 ( httpd.conf)

vi /usr/local/apache/conf/httpd.conf

并将DocumentRoot域的设置为

DocumentRoot /home/user/public_html/www

保存文件并重新启动 httpd 服务。

或(推荐)

看看这个问题(它的答案) - https://stackoverflow.com/a/5891858/1361042

编辑

使用这个 HTACCESS:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/www/
    RewriteRule ^(.*)$ www/$1 [NC, QSA]
</IfModule>

不要将它添加到你的,而是用这个替换你的 htaccess。

于 2012-10-05T12:15:29.783 回答