htaccess mod_rewrite有或没有查询字符串

时间:2014-07-30 03:07:48

标签: php apache .htaccess mod-rewrite url-rewriting

我有一个棘手的问题,我的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似乎是唯一的挂钩。

关于我需要更改和/或添加什么以使其正常工作的任何想法?

0 个答案:

没有答案