URL查询(获取参数如?id = 5)在htaccess中使用mod_rewrite重定向

时间:2012-09-04 13:23:20

标签: wordpress apache .htaccess mod-rewrite redirect

我当前的htaccess看起来像是

DirectoryIndex welcome.do index.jsp default.php index.wml homepage.php default.htm default.html index.php index.php4 index.php3 index.htm index.html index.shtml default_new_vhost.html

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

RedirectPermanent /content.asp?AUID=01 /content/
...

重定向不起作用(我只获得了Wordpress的404页)。原因是URL中的get参数。我尝试了here张贴的答案。 E.g。

RewriteCond %{REQUEST_URI} ^/content.asp$
RewriteCond %{QUERY_STRING} ^AUID=01$
RewriteRule ^.*$ http://www.yourdomain.com/content? [L,R=301]

我得到500错误或者我来到Wordpress的404页面。这样做的正确方法是什么?我的表格中有很多条目

RedirectPermanent /content.asp?pCategory=&pCountry=1&AUID=01 /content/

这是错误的,但我寻找一种有效的方法将它放入htaccess中。我可以使用这样的东西吗?

RewriteCond %{REQUEST_URI} ^/content.asp$
RewriteCond %{QUERY_STRING} ^pCategory=([0-9]+)&pCountry=([0-6]+)$
RewriteRule ^.*$ http://www.yourdomain.com/content? [L,R=301]

2 个答案:

答案 0 :(得分:0)

你只是这样做(来自我的网站)

rewriteCond %{QUERY_STRING} ^id=([0-9]+)$
rewriterule ^news_details.asp$ news/index.php?old_id=%1

将^ id替换为任何参数,只需用户%1,%2即可在重写中访问它们,你的将是

rewriteCond %{QUERY_STRING} ^pCategory=([0-9]+)&pCountry=([0-6]+)$
rewriteRule ^content.asp$ /content/?category=%1&country=%2

答案 1 :(得分:0)

我最终得到了以下解决方案:

DirecotryIndex welcome.do index.jsp ...

RewriteCond %{REQUEST_URI} ^/content.asp$
RewriteCond %{QUERY_STRING} ^AUID=01$ [OR]
RewriteCond %{QUERY_STRING} ^pCategory=&pCountry=1&AUID=01$ [OR]
RewriteCond %{QUERY_STRING} ^pCategory=&pCountry=8&AUID=01$
RewriteRule ^.*$ /content? [L,R=301]

RedirectPermanent /italiano/index.asp /it/

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

问题是我之前将代码放在Wordpress代码之后。如果在没有BOM的情况下将htaccess的编码更改为UTF-8,也可以使用变音符号。您还可以使用GET参数重定向到URL而不会出现问题。