2016-02-23 70 views
1

我在我的.htaccess中的规则个性化网址重定向到跟踪网址

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^\.myvanityurl\.com$ [NC] 
RewriteRule ^(.*)$ https://www.myprimaryurl.com?utm_source=myvanityurl.com&utm_medium=print&utm_campaign=general [R=301,L] 

RewriteCond %{HTTP_HOST} !^www\.myprimaryurl\.com$ [NC] 
RewriteRule ^(.*)$ https://www.myprimaryurl.com/$1 [R=301,L] 

RewriteCond %{SERVER_PORT} ^80$ 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 

#Remove index.php from url 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 

基本上我想这个文件acheive 4两件事:

  1. 重定向到myvanityurl.com跟踪网址
  2. 重定向任何域名停放到myprimaryurl.com
  3. 强制所有的域使用HTTP
  4. 雷姆如预期,除了规则1. myvanityurl.com被重定向到https://www.myprimaryurl.com但查询字符串PARAMATERS从URL中缺少来自URL

所有这些工作的OVE index.php文件。将不胜感激任何意见,为什么这是行不通的。

+0

什么查询字符串参数丢失 - 你在那里你自己放置在重写替换,或任何出现在_original_请求?如果是后者,则需要使用“QSA”标志。如果前者 - 调试正在发生的事情。通过浏览器的调试工具,网络面板来检查您的浏览器产生了什么要求。也许它会使最初的一个包括你想要的查询字符串参数,然后再被其他规则或类似的规则重定向。 – CBroe

+0

缺少的参数是我自己放在重定向网址中的参数。 myvanityurl.com应重定向到https://www.myprimaryurl.com?utm_source=myvanityurl.com&utm_medium=print&utm_campaign=general,但它会被重定向到https://www.myprimaryurl.com。 –

回答

0

保持你的第一条规则是:

RewriteCond %{HTTP_HOST} ^myvanityurl\.com$ [NC] 
RewriteRule ^(.*)$ https://www.myprimaryurl.com/$1?utm_source=myvanityurl.com&utm_medium=print&utm_campaign=general [R=301,L,NE] 

即删除%{HTTP_HOST}变量的模式开始DOT和目标URL中使用$1

请确保在测试此更改之前清空浏览器缓存。

+1

清除缓存并删除DOT似乎解决了这个问题。 –