强制网址重写/重定向?

时间:2012-05-25 21:43:17

标签: php .htaccess

这个重写方法有效,但它不是强制网址重写/重定向到新网址。

我用这个:

RewriteEngine on
RewriteRule ^page/([^/\.]+)$ search.php?q=$1 

我可以访问重写的网址(项目/页面/等等),但旧的网址/链接(search.php?q =等)仍然无需重定向即可访问。

注意:我使用$_SERVER变体来创建网址,并使用localhost。

3 个答案:

答案 0 :(得分:4)

你必须重写项目/页面到search.php吗?为了隐藏丑陋的网址。

重定向 search.php?项目/页面,以使规范网址成为访问该资源的唯一途径。

在你的代码中没有提到重定向,你只是重写。

以这种方式思考

  • 重写隐藏了规范网址背后的丑陋网址(它隐藏了它们,它并没有消除它们);
  • 重定向响应浏览器,并显示“search.php?已移至项目/页面,尝试该链接”等消息,浏览器将跟随新链接;

答案 1 :(得分:1)

要将所谓的ugly URLs重定向到SEO友好网址,您需要另一个重写规则。你的.htaccess代码是这样的:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^page/([^/\.]+) search.php?q=$1 [L,QSA,NC]

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

一旦您确认其工作正常,请将R=302更改为R=301

答案 2 :(得分:-2)

您需要在重写规则上使用[R=301]才能将其转换为客户端重定向。否则它纯粹是内部重写,客户端永远不会看到网址被更改。

e.g。

RewriteRule ^page/([^/\.]+)$ search.php?q=$1 [R=301,L]