Apache 试图解释mod_rewrite-可能需要一些信息
好吧,我对mod_重写并不感到惊讶。我正在努力变得更好,但有时阅读起来有点困难 无论如何,我正在尝试为客户机设置一个测试站点,并移动到他们当前的实时站点。我一直在读mod_rewrite,但很难找到一个易于理解的源代码 他们有一个相当广泛的.htaccess文件 例如:Apache 试图解释mod_rewrite-可能需要一些信息,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,好吧,我对mod_重写并不感到惊讶。我正在努力变得更好,但有时阅读起来有点困难 无论如何,我正在尝试为客户机设置一个测试站点,并移动到他们当前的实时站点。我一直在读mod_rewrite,但很难找到一个易于理解的源代码 他们有一个相当广泛的.htaccess文件 例如: RewriteCond %{HTTP_HOST} ^clientdomain\.com RewriteCond %{HTTPS} =on RewriteRule .* https://www.%{SERVER_NAME}%{RE
RewriteCond %{HTTP_HOST} ^clientdomain\.com
RewriteCond %{HTTPS} =on
RewriteRule .* https://www.%{SERVER_NAME}%{REQUEST_URI} [R,L]
我读这篇文章的方式是-
如果域以clientdomain.com开头,请重定向到启用HTTPS的服务器-我读得正确吗
下一步是:
RewriteCond %{HTTP_HOST} ^(.*)clientdomain2.COM [NC]
RewriteRule ^(.*)$ clientdomain/template.php?pid=49 [R,L]
据我所知,这表明,如果域是clientdomain2.com,则指向clientdomain并转到template.php页面,GET参数为pid=49-正确吗
最后,我完全不知道这意味着什么:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|/[^.]*)$ [NC]
RewriteRule ^(.*)(/|\.php|\.html|\.htm)*$ index.php?phpinc=$1 [QSA]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
看起来第一部分去掉了所有的.php、.htm和.html,对吗
关于这一点的任何建议,或是关于mod_重写的易于理解的处理方法的资料都是非常受欢迎的
如果域以clientdomain.com开头,请重定向到启用HTTPS的服务器-我读得正确吗
几乎可以这样理解:
“如果域以clientdomain.com
开头,并且请求是HTTPS请求,则302重定向到由ServerName
指令(可能在vhost配置中)定义的服务器,但前面有一个www.
,请求相同并使用HTTPS。”
据我所知,这表明,如果域是clientdomain2.com,则指向clientdomain并转到template.php页面,GET参数为pid=49-正确吗
否,这将检查其中是否有clientdomain2.COM
的内容,不区分大小写(NC
标志),并且302将其重定向到相同的主机和协议以及URI/clientdomain/template.php?pid=49
。因为它不包含协议和主机名(例如http://clientdomain2.com/
),它将重定向到请求使用的主机和协议,只是URI发生了更改。示例:请求用于http://www.clientdomain2.com/something/foo
并且重定向到http://www.clientdomain2.com/clientdomain/template.php?pid=49
看起来第一部分去掉了所有的.php、.htm和.html,对吗
这是一种“路由”类型的规则。这些规则通常在重定向规则之后,因为这是一种包罗万象的规则。它说:
/index.php
NC
标志):php
,html
,htm
,或者请求的URI只是/
,或者请求的URI根本没有扩展(/[^.]*
表达式)。看起来这个条件是为了防止规则应用于脚本、图像、css样式等/index.php
,其中使用名为phpinc的查询字符串参数以及请求的URI(sans扩展名)的值。任何现有的查询字符串参数都会追加到末尾(QSA
flag)
HTTP\u AUTHORIZATION
设置为AUTHORIZATION
标题中的任何内容。这是通过php脚本中的$\u服务器
变量获取的
如果域以clientdomain.com开头,请重定向到启用HTTPS的服务器-我读得正确吗
几乎可以这样理解:
“如果域以clientdomain.com
开头,并且请求是HTTPS请求,则302重定向到由ServerName
指令(可能在vhost配置中)定义的服务器,但前面有一个www.
,请求相同并使用HTTPS。”
据我所知,这表明,如果域是clientdomain2.com,则指向clientdomain并转到template.php页面,GET参数为pid=49-正确吗
否,这将检查其中是否有clientdomain2.COM
的内容,不区分大小写(NC
标志),并且302将其重定向到相同的主机和协议以及URI/clientdomain/template.php?pid=49
。因为它不包含协议和主机名(例如http://clientdomain2.com/
),它将重定向到请求使用的主机和协议,只是URI发生了更改。示例:请求用于http://www.clientdomain2.com/something/foo
并且重定向到http://www.clientdomain2.com/clientdomain/template.php?pid=49
看起来第一部分去掉了所有的.php、.htm和.html,对吗
这是一种“路由”类型的规则。这些规则通常在重定向规则之后,因为这是一种包罗万象的规则。它说:
/index.php
NC
标志):php
,html
,htm
,或者请求的URI只是/
,或者请求的URI根本没有扩展(/[^.]*
表达式)。看起来这个条件是为了防止规则应用于脚本、图像、css样式等