0

如果请求是子域,我希望我的站点只指向 /user 文件夹。

如果请求是 subdomain.site.com/admin,则站点应显示 subdomain.site.com/user/admin 的页面。

我的代码的问题在于它会进行 301 重定向,而不仅仅是保留 url 地址。

我的代码如下所示:

<IfModule mod_rewrite.c>

DirectoryIndex index.php

RewriteEngine on
RewriteBase / 

RewriteCond %{HTTP_HOST} !^www.bildsida.se(.*)
RewriteCond %{HTTP_HOST} ^[^.]+.bildsida.se(.*)

RewriteRule ^$ user/$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.*) user/$1 [L]

</IfModule>

你也可以自己试试,去http://mickes.bildsida.se/admin看看地址怎么变成/user/admin了。非常令人不安...

4

3 回答 3

0

你只需要你展示的几行来让它工作。

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^www.bildsida.se
RewriteCond %{HTTP_HOST} ^.+\.bildsida\.se

RewriteRule ^(.*)$ user/$1 [L]

我调整了 HTTP_HOST 检查,因为该参数只查看域名,所以最后不需要 (.*)。我还删除了查看文件是否存在或是否为目录的检查,因为您希望重定向所有内容(例如,没有理由可以访问其他子域的文件)

于 2012-11-30T14:41:25.227 回答
0

您的代码可以简化为以下几行:(改为尝试)

RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www\.)?bildsida\.se [NC]
RewriteRule ^(.*)$ /user/$1 [QSA,L]
于 2012-11-30T16:29:22.537 回答
0

最后!经过日日夜夜阅读论坛和文档,并测试所有可能的方法,我让它工作了!

消音:

<IfModule mod_rewrite.c>

    DirectoryIndex index.php

    RewriteEngine on
    RewriteBase /

    RewriteCond %{HTTP_HOST} !^www.bildsida.se
    RewriteCond %{HTTP_HOST} !^bildsida.se

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^$ user/index.php [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)? user/$1/ [QSA]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule /(.+)/ user/$1 [QSA]

</IfModule>
于 2012-12-01T10:54:22.147 回答