Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 通过htaccess的子域屏蔽_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess 通过htaccess的子域屏蔽

.htaccess 通过htaccess的子域屏蔽,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,已编辑 我在服务器上设置了一个通配符子域dns区域,希望每个子域使用.htaccess和mod rewrite加载/users/direcotry的内容 我希望浏览器栏中的URL保持不变,以便显示: http://username.domian.com/../../ 在显示以下内容的同时: http://www.domain.com/users/username/../../ 此外,如果访问了URL的www版本,我想重定向(更改URL)到子域版本 我不太熟悉mod重写规则,任何帮助都将不胜感

已编辑

我在服务器上设置了一个通配符子域dns区域,希望每个子域使用.htaccess和mod rewrite加载/users/direcotry的内容

我希望浏览器栏中的URL保持不变,以便显示:

http://username.domian.com/../../
在显示以下内容的同时:

http://www.domain.com/users/username/../../
此外,如果访问了URL的www版本,我想重定向(更改URL)到子域版本

我不太熟悉mod重写规则,任何帮助都将不胜感激

谢谢。

试试这个:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteCond %1 !=www
RewriteRule ^(.*)$ http://www.domain.com/users/%1/$1 [R=302,L]
如果用户访问
tom.domain.com/directory1/directory2/directory3/file.html
,他将被重定向到
www.domain.com/users/tom/directory1/directory2/directory3/file.html

如果这不是您真正想要的(因为我对您的“蒙面”概念有点困惑),那么请更好地解释您的要求,以便我可以调整规则


更新: 要在浏览器中保持URL不变,请执行以下操作:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/users/
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$
RewriteCond %1 !=www
RewriteRule ^(.*)$ /users/%1/$1 [L]

但是有一个问题:如果
directory1
将被称为
users
(例如
tom.domain.com/users/directory2/directory3/file.html
),那么这将不起作用——这是您为重写所付出的代价解决方案:
用户
重命名为独特的名称(例如
用户(u dir_123_abc)
等--
www.domain.com/users(u dir)123(u abc/tom/users/directory2/directory3/file.html
)。

@dSquared查看更新的答案--我没有在实时服务器上测试过,但应该可以正常工作。感谢您提供更新的答案。当点击页面内的链接时,它会产生魅力;但是,当直接在浏览器中键入URL时,它会重定向到username.domain.com/users/username/。/../有什么想法吗?您还有什么其他规则?如果您只有这些规则,则不应重定向。加。。无论URL是键入的还是单击的,它都应该工作——所以这肯定是另一条规则。。或者出现一些自定义代码(听起来像是检查页面引用?),重写规则仅在URL在目录上有尾随斜杠时触发,而不是在没有斜杠时触发。在这两种情况下我怎么能让它都着火呢?所有其他规则都被注释掉了。如果有斜杠或没有斜杠,则规则本身不区分大小写,因此在这两种情况下都应该有效。但是无论如何--尝试添加这个指令
DirectorySlash Off
(我假设您没有相反的指令)。