我希望我的.htaccess中提到的条件非常好。我想添加一个类似的条件,但是当我这样做时,它会忽略继续使用这个条件。
目前在.htaccess:
RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.domain\.com$ [NC]
RewriteRule ^item/([^/]+)/([^/]+)/?$ item.php?country=%1&adid=$1 [L,QSA]
想要添加:
RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.domain\.com$ [NC]
RewriteRule ^redirect/([^/]+)/([^/]+)/?$ redirect.php?country=%1&item=$1 [L,QSA]
我希望pk.domain.com/redirect/242/转到redirect.php并提供以下$ _REQUEST值
而不是去redirect.php,它转到item.php。
其次,我的网站未能通过网站规范化测试。
和
对这两个问题的任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
首先,要将所有请求从http://pk.domain.com永久重定向到http://www.pk.domain.com,您可以在vhost配置文件中使用RedirectMatch
:
<VirtualHost *:80>
ServerName pk.domain.com
RedirectMatch permanent "/(.*)" http://www.pk.domain.com/$1
....
....
</VirtualHost>
<VirtualHost *:80>
ServerName www.pk.domain.com
....
....
</VirtualHost>
一旦您确定所有请求都被重定向到www.pk.domain.com,您应该在DocumentRoot中为www.pk.domain.com创建一个带有以下行的.htaccess文件:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.([a-z]*)\.domain\.com$ [NC]
RewriteRule ^redirect/([0-9]*)/$ redirect.php?country=%1&item=$1 [L,QSA]
在RewriteCond指令中,国家/地区代码将在%1
中提取,并将在查询字符串参数country
中提供。
在RewriteRule指令中,字符串重定向/“数字”之后的值将在$1
中提取,并将在查询字符串参数item
中提供
编辑如果您无法编辑vhost配置文件,请将以下内容放在DocumentRoot下的.htaccess文件中,以永久性地将所有请求从http://pk.domain.com重定向到http://www.pk.domain.com:< / p>
RewriteEngine On
RewriteCond %{HTTP_HOST} =pk.domain.com
RewriteRule (.*) http://www.pk.domain.com/$1 [R=301]