动态htaccess为www或非www和http或https

时间:2018-01-09 09:21:27

标签: .htaccess http web https no-www

我希望我能根据自己的需要解释自己。我试图写一个动态htaccess ,但我还没有理解条件和重写规则。

这是我的事情,我建立了一个小型CMS,用户将在其中写下他们的基本网址,如#34; stackoverflow.com"并且他会在http或https之间选择一些无线电输入,也可以在www或之间选择。对于搜索引擎优化的一部分,有一件事是重要的是强制斜线除了带扩展名的网址。

因此,ssl和www的选项存储在DB中,所以我想知道你的想法,如果编写一些代码更好:

if($ssl){
  $htaccess.= "RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1/ [R=301]\n";
}else{
  $htaccess.= "RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1/ [R=301]\n";
}

正如你所看到的那样,如果我想添加www,那么我试图添加更多的php条件,但我确信必须有一种方法可以在几个htacess行中完成它,我已经看到我们可以使用这样的条件:

RewriteCond %{HTTP_HOST} ^www.stackoverflow.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTPS}:s on:(s) 
RewriteRule ^ http%1://www.stackoverflow.com:2368%{REQUEST_URI} [P,QSA,L]

但是我发现所有这些代码都有一个固定的www或非www,我不知道他们是否保留斜线。所以,我想知道我是否可以在上面的代码中添加更多条件,将www作为变量,并询问是否有一些扩展来删除斜杠。类似的东西:

RewriteCond %{HTTP_HOST} ^www.stackoverflow.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTPS}:s on:(s)
RewriteCond %{HTTP_HOST} !^www. [OR]
RewriteCond %{HTTPS}:s on:(s)
RewriteRule ^ http%1://%2stackoverflow.com%{REQUEST_URI} [P,QSA,L]

我写了这个,但我不知道我是否可以保留变量名相同,或者%2是否取值,或者是否有htaccess条件的限制。因为我试图为此找到一些htaccess文档,但我没有得到它,我尝试的所有内容都显示错误的配置屏幕所以我希望你至少可以提供一些关于如何使用这些变量的建议或者如果你认为如果有这样的话,可以轻松实现。

提前致谢。

0 个答案:

没有答案