Php 破译这条接入线

Php 破译这条接入线,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,好的,在上面的代码中,我认为第一行写的是“如果URL没有www”,第三行写的是“用www.as 301重定向重写URL”,但我认为第二行是考虑子域并排除它们,但是谁能告诉我这是什么!\。([a-z-]+\[a-z]{2,6})$说的准确吗 另一个问题:如果启用了mod_rewrite,我是否仍需要将RewriteEngine On添加到.htaccess文件的顶部?如果不匹配,会发生什么情况?如果字符串: 没有 \。一个文字点,后跟 [a-z-]a-z,-范围的多个字符,后跟 \。另一个文字点

好的,在上面的代码中,我认为第一行写的是“如果URL没有www”,第三行写的是“用www.as 301重定向重写URL”,但我认为第二行是考虑子域并排除它们,但是谁能告诉我这是什么
!\。([a-z-]+\[a-z]{2,6})$
说的准确吗


另一个问题:如果启用了
mod_rewrite
,我是否仍需要将
RewriteEngine On
添加到
.htaccess
文件的顶部?如果不匹配,会发生什么情况?

如果字符串:

  • 没有
  • \。
    一个文字点,后跟
  • [a-z-]
    a-z,-范围的多个字符,后跟
  • \。
    另一个文字点,后跟
  • [a-z]{2,6}
    介于a-z范围的2到6个字符之间
  • $
    在字符串结尾之前
括号“(..”允许捕获匹配的子字符串。 然后可以在以下表达式/替换中使用

NC
标志将导致执行不区分大小写的匹配

在您的情况下,如果传入的URL

  • 不以
    www.
    开头(第1行)
  • 不会以类似于
    .hostname.tld
    (第2行)的内容结束
请参阅,以获得一个很好的实验正则表达式的平台

# Redirect all users to access the site WITH the 'www.' prefix
RewriteCond %{HTTP_HOST} !^www\. [NC]
**RewriteCond %{HTTP_HOST} !\.([a-z-]+\.[a-z]{2,6})$ [NC]**
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]