RewriteCond%{QUERY_STRING}

时间:2017-01-12 16:27:52

标签: apache .htaccess http mod-rewrite web

这就是我想要完成的事情:

http://example.com/real-estate/?group=rentals 需要去 http://example.com/real-estate/rentals

这就是我的.htaccess中没有的功能:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/real-estate/ [NC]
RewriteCond %{QUERY_STRING} ^group=rentals
RewriteRule (.*) http://example.com/real-estate/rentals/? [NC,R=301,L]
</IfModule>

2 个答案:

答案 0 :(得分:0)

这是非常不寻常的...通常人们想要反向重定向....

你的代码看起来很好,只有一些小的修正。但那些可能是你所缺少的:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} ^/real-estate/?$ [NC]
  RewriteCond %{QUERY_STRING} ^group=rentals$
  RewriteRule ^ http://example.com/real-estate/rentals [R=301,L]
</IfModule>

要使其工作,必须将规则直接放在http主机配置中,或者放在hosts文档根目录中的.htaccess样式文件中,并启用对此类文件的解释。

一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用.htaccess样式文件。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。

答案 1 :(得分:0)

只需在.htaccess文件中使用此功能:

RewriteEngine On
RewriteRule ^real-estate/([^/]*)$ /real-estate/?group=$1 [L]

它将为您留下网址:http://example.com/real-estate/rentals。在测试之前,请确保清除缓存。