1

我想将所有请求重定向到:domain.com到子文件夹/sub,但我不希望该子文件夹显示在 url 中,以便我的 url 保持domain.com

这可能吗?

编辑:在尝试了所有建议之后,我仍然会得到 URL,就像domain.com/sub我去的时候一样domain.com

这是我当前的代码

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?sub.domain.com$
RewriteRule ^(/)?$ en [L]


RewriteCond %{HTTP_HOST} ^(www.)?sub.domain.fr$
RewriteRule ^(/)?$ fr [L]

我的文件夹结构是:

/ ->en ->fr

4

5 回答 5

1

尝试将其放入文档根目录的 htaccess 文件中:

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/sub%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/sub%{REQUEST_URI} -d
RewriteRule ^(.*)$ /sub/$1 [L]

这将确保如果您请求/sub/404 响应中不存在的内容,则不会暴露您正在将所有内容路由到/sub/.

于 2012-08-22T10:33:33.517 回答
1

在你的 htaccess 文件中试试这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteCond %{REQUEST_URI} !^/?sub/
RewriteRule ^(.*)$ /sub/$1 [L,QSA]

编辑 :

只是对您发布的代码进行一些清理,它应该是:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.com$
RewriteRule ^$ /en/ [L]

RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.fr$
RewriteRule ^$ /fr/ [L]
于 2012-08-22T10:42:34.663 回答
0

重写规则在服务器端起作用(因此它们不会影响 URL)。
您真的应该阅读有关 mod_rewrite 的内容并亲自尝试一下。

于 2012-08-22T10:32:39.507 回答
0

使用模式重写,您可以按照以下方式做一些事情

RewriteEngine on
RewriteRule ^$ sub [L]

你可以在这里阅读更多:http: //www.blogstorm.co.uk/htaccess-mod_rewrite-ultimate-guide/

于 2012-08-22T10:32:41.127 回答
0
RewriteCond %{REQUEST_URI}  !^/sub/.*$   [NC]
RewriteRule  ^(?<!sub/)(.*)$   /sub/$2   [L,NC]
于 2012-08-22T10:34:17.650 回答