Regex 如何将www加入现有的非www重写规则

Regex 如何将www加入现有的非www重写规则,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我正在尝试将www添加到现有的非www重写中: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 我试过: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !

我正在尝试将www添加到现有的非www重写中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我试过:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

#Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我如何加入这两个重写规则

您可以使用:

RewriteEngine On

#Redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

明亮的谢谢。我明白你为什么把它移到-d-f-l上面了。你能解释一下/$1和{REQUEST_URI}之间的区别,以及你为什么添加了NE吗。如果解释太多,请告诉我一些好的读物,如果你知道的话。你可以检查
NE
是用于
noescape
/$1
%{REQUEST\u URI}
几乎相同,但是如果.htaccess在子目录中,那么它们代表不同的值。