我正在寻找以下最简单,最有效的方法:
是否有办法在一个脚本中合并两者?
我没有足够的经验来有效地做到这一点。
任何帮助都将是一次大规模的帮助。
答案 0 :(得分:2)
通常你可以在一个步骤中完成这两个方面如果这只是一个主机名:
RewriteEngine On
RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP_HOST} ^www
RewriteRule ^/?(.*)$ http://example.org/$1 [END,R=301,QSA]
对于更灵活的解决方案,例如,如果需要识别多个主机名,则需要使用两对独立的条件和规则。
对于旧的apache http服务器,您可能需要将END
标志替换为L
标志。因此,如果以上结果导致内部服务器错误,请尝试此操作。 (http状态500)。
以上apporach适用于.htaccess
样式文件和真正的http主机配置。但是一般性提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用.htaccess
样式文件。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。
答案 1 :(得分:-2)
阅读.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>