2012-05-25 70 views
0

首先,对不起我的英文不好。htaccess重写查询字符串并删除空值

我尝试重写从表单获取并重定向的url。

我的网址是这样的:

http://www.mysite.com/properties?action=search&agreement=for-rent&category=my-category&type=&zone=my-zone&city=my-city 

,我有这样的.htaccess配置:

11. RewriteCond %{QUERY_STRING} ^action=(?:[a-zA-Z\-]*)&(?:.*)=([a-zA-Z\-]*)&(?:.*)=([a-zA-Z\-]*)&(?:.*)=([a-zA-Z\-]*)&(?:.*)=([a-zA-Z\-]*)&(?:.*)=([a-zA-Z\-]*)$ 
12. RewriteRule (.*) %{REQUEST_URI}/%1/%2/%3/%4/%5/? [R=301,L] 

所以基本上我所有的要求都直接指向index.php。

21. RewriteCond %{REQUEST_URI} !index\.php|resources|hidden 
22. RewriteRule ^(.*)$ index.php/$1 [L] 

所有的作品,但问题是,当我在查询字符串为空值,规则添加双斜线和上面的网址(例如丝毫&类型= &区=我区...类型有空值)将转化这样的:

http://www.mysite.com/for-rent/my-category//my-zone/my-city/ 

的问题是:如何删除在.htaccess如果我有查询字符串中的一个或多个空值所产生的双斜线?

谢谢

回答

1

最简单的是做另一个重定向(不真正漂亮,因为它需要两个301)。

RewriteCond %{THE_REQUEST} // 
RewriteRule .* $0 [R=301,L] 

有趣的部分是,当url加载了一个双斜杠,mod_rewrite会自动删除它。正如你可以在上面看到的,你只需要将自己的url重写一遍。

相关问题