.htaccess htaccess问题和重写条件

.htaccess htaccess问题和重写条件,.htaccess,rewrite,.htaccess,Rewrite,这是我当前的脚本。。。我需要允许“sub.domain.com/register/USER” 目前,我有一个“sub.domain.com”的重新写入条件,它指向“sub.domain.com/login” 我做错了什么 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^www.domain.com$ RewriteCond %{HTTP_HOST} ^(.+).domain.com$ R

这是我当前的脚本。。。我需要允许“sub.domain.com/register/USER”

目前,我有一个“sub.domain.com”的重新写入条件,它指向“sub.domain.com/login”

我做错了什么

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{HTTP_HOST}  !^www.domain.com$
RewriteCond %{HTTP_HOST}   ^(.+).domain.com$
RewriteRule ^register(.*) https://%1.domain.com/register$1 [L,R=302,QSA]

RewriteCond %{HTTP_HOST}   ^(.+).domain.com$
RewriteRule ^$ https://%1.domain.com/login/ [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

重新启动发动机
重写cond%{HTTP_HOST}^www.domain.com$
重写cond%{HTTP_HOST}^(+).domain.com$
重写规则^register(.*)https://%1.domain.com/register$1[L,R=302,QSA]
重写cond%{HTTP_HOST}^(+).domain.com$
重写规则^$https://%1.domain.com/login/[L,R=302]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php/$1[L]

截至更新,我在/register/USER.中有一个重定向循环。

用以下内容替换您的第一组规则:

RewriteCond %{HTTP_HOST}  !^www.domain.com$
RewriteCond %{HTTP_HOST}   ^(.+).domain.com$
RewriteRule ^register(.*) - [L,R=302,QSA]
编辑:可能更好的解决方案是仅当URI不是/register/user时才重写。因此,摆脱上述规则,并将其下面的规则更改为:

RewriteCond %{HTTP_HOST}  !^www.domain.com$
RewriteCond %{HTTP_HOST}   ^(.+).domain.com$
RewriteCond %{REQUEST_URI} !^/register/?.*
RewriteRule ^(.*)$ https://%1.domain.com/login/ [L,R=302]

是的,那将是一个循环。现在试试?实际上,它不起作用。在您的逻辑中,它只适用于寄存器。我需要“sub.domain.com”才能转到/login/。。和“sub.domain.com/register/user”去那里/register/user去哪里?此规则的作用是首先检查HTTP主机是否以www开头,然后抓住domain.com之前的部分,然后说如果URI以register开头,则不进行任何重写,并允许其进入。类似于/login/和/register/user/works。。但是,www.domain.com/home不起作用。有什么想法吗?答案中添加了www例外。