使用.htaccess将查询字符串附加到URL

时间:2013-05-31 10:13:30

标签: apache .htaccess mod-rewrite http-redirect

我需要执行以下操作:应将http://domain.com/view.php?show=my_article_name网址重定向到http://domain.com/my_article_name/我该怎么做?提前谢谢。

2 个答案:

答案 0 :(得分:5)

您可以尝试以下规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+view\.php\?show=([^\s]+) [NC]
RewriteRule ^ /%1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ /view.php?show=$1 [L,QSA,NC]

验证一切正常后,将R=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。

答案 1 :(得分:1)

很少有人想要将不友好的SEO重定向到SEO友好的URL,通常是相反的,所以请确保你想要:

http://domain.com/view.php?show=xyz   =>   http://domain.com/xyz/

而不是更常见的:

http://domain.com/xyz                 =>   http://domain.com/view.php?show=xyz

您可以使用类似这样的内容来捕获查询字符串并将其传递给URL(我已将R=301添加到标记中,但如果您不想要永久重定向,请将其替换为{{1 }}):

R

未经测试,因为我目前没有运行Apache,但如果它有帮助但不对,请给我工作代码来解决我的问题。