我有一个棘手的问题,我的htaccess,mod_rewrite脚本没有按照需要挂钩。
这是我的剧本:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Fix www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [NC,QSA]
# Base rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www\.)?localforge.com$ [NC]
RewriteRule ^([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?$ index.php?sub=localforge&type=$1&p1=$2&p2=$3&p3=$4&p4=$5&p5=$6 [NC,L,QSA]
# Subdomain rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^(www|mail).localforge.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).localforge.com$ [NC]
RewriteRule ^([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?([A-Za-z0-9-]+)?/?$ index.php?sub=%1&type=$1&p1=$2&p2=$3&p3=$4&p4=$5&p5=$6 [NC,L,QSA]
</IfModule>
这是我想要实现的目标:
#Fix www
如果没有子域名,则会添加www。
# Base rewrite
如果子域名是www并且无论是否有查询字符串(最多六个参数),重写如下:
index.php?sub=localforge&type=$1&p1=$2&p2=$3&p3=$4&p4=$5&p5=$6
# Subdomain rewrite
如果子域不是www,无论是否有查询字符串(最多六个参数),重写如下:
index.php?sub=%1&type=$1&p1=$2&p2=$3&p3=$4&p4=$5&p5=$6
我可以处理PHP处理过程中传递的变量会发生什么。
只有当存在查询字符串时, # Subdomain rewrite
似乎才会被挂钩,在ReWritten变量中返回子域和查询字符串。如果没有查询字符串# Base rewrite
似乎是唯一的挂钩。
关于我需要更改和/或添加什么以使其正常工作的任何想法?