-4

我需要做这样的事情: URL http://domain.com/view.php?show=my_article_name应该被重定向到http://domain.com/my_article_name/我该怎么做?提前致谢。

4

2 回答 2

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=302R=301. R=301在测试你的 mod_rewrite 规则时避免使用(永久重定向)。

于 2013-05-31T12:04:34.667 回答
1

很少有人想要将一个对 SEO 不友好的 URL 重定向到一个对 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到标志,但如果您不想要永久重定向,请将其替换为R):

RewriteBase   /
RewriteCond   %{QUERY_STRING}    ^show=(.*)$    [NC]
RewriteRule   ^view.php$         %1/            [NC,R=301,L]

未经测试,因为我目前没有运行 Apache,但如果它有帮助但不正确,请给我工作代码来修复我的答案。

于 2013-05-31T10:40:17.670 回答