微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不可见的mod_rewrite并不总是隐身! “www”和“无子域”

我的网站在使用cPanel 11的主机上。

不幸的是,它将“www.e-motiv.net”和“e-motiv.net”redirect到public_html。 我想分享 public_html / www和public_html /,这对最终用户是不可见的。

我认为最好的方式是通过mod_rewrite,所以我做了以下。

文件空间看起来像这样(来自public_html /):

在重写.htaccess中保留查询string

mod_rewrite – 排除url

CodeIgniter删除index.PHP不工作

重写为“漂亮的url”?

Yii2 htaccess – 如何完全隐藏前端/网页和后端/网页

/.htaccess

的index.PHP

/www/index.html

/www/test/index.html

我想要这个(第二部分隐形!):

e-motiv.net – > /index.PHP

www.e-motiv.net – > /www/index.PHP

www.e-motiv.net/test – > /www/test/index.PHP

我以为这会做到这一点:

RewriteCond %{HTTP_HOST} ^www.e-motiv.net$ RewriteCond %{REQUEST_URI} !/www RewriteRule ^(.*)$ /www/$1 [NC,L]

1和2工作,但是虽然3给出正确的文件,它改变地址! (所以不可见)所以,在地址栏你可以得到:www.e-motiv.net/test – > www.e-motiv.net/www/test/呃?

如果mod_rewrite不是最好的解决scheme,请告诉!

public_html中的.htaccess返回404页面

用mod_rewriteredirect到Apache内build的404页面

使受保护的URL密码免受直接访问htaccess的影响

.htaccess将所有子文件内容(有和没有结束斜杠)redirect到相同的子文件

Wamp,SlimPHP和Htacess

这是因为mod_dir。 mod_dir将缩略图添加到映射到目录的网址。 mod_dir不知道用mod_rewrite创建的这些“虚拟url”。

所以要么通过使用禁用此行为

DirectorySlash Off

然而,这将会向www.example.com/folder发出请求,导致404找不到。 你可以用一些重写代码解决这个问题。 所以完整的解决方案将是这样的:

DirectorySlash Off #www dir only RewriteCond %{DOCUMENT_ROOT}/$0 -d RewriteRule ^www/(.+[^/])$ /$1/ [R,L] #other dirs RewriteCond %{DOCUMENT_ROOT}/$0 -d RewriteRule ^(.+[^/])$ /$1/ [R,L]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐