htaccess,URL重写和重定向301

时间:2016-05-31 00:38:32

标签: .htaccess url url-rewriting url-redirection http-status-code-301

我在堆栈溢出中查找了这个,但没有找到任何相关的答案:

我有一个htaccess文件:

RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/?(.*) http://www.mywebsite.com/$1 [L,R,NE]

RewriteRule ^home$  /index.php [L]
RewriteRule ^home$  /index.php?content=home [L]
RewriteRule ^accueil$  /index.php?content=home&lang=fr [L]
RewriteRule ^home$  /index.php?content=home&lang=en [L]

RewriteRule ^acceuil-message-1$  /index.php?content=home&val=1&lang=fr [L]
RewriteRule ^home-notice-1$  /index.php?content=home&val=1&lang=en [L]
RewriteRule ^acceuil-message-2$  /index.php?content=home&val=2&lang=fr [L]
RewriteRule ^home-notice-2$  /index.php?content=home&val=2&lang=en [L]

RewriteRule ^news-a-la-une$  /index.php?content=news&mode=featured&lang=fr [L]
RewriteRule ^featured-news$  /index.php?content=news&mode=featured&lang=en [L]

RewriteRule ^news-recentes-([0-9]+)$  /index.php?content=news&mode=list&page=$1&lang=fr [L]
RewriteRule ^latest-news-([0-9]+)$  /index.php?content=news&mode=list&page=$1&lang=en [L]
...

工作正常。

但我需要设置301重定向。 所以,我只是将[L]改为[R = 301,L]

但是当我这样做时,我的网址就像以前在浏览器上一样。

我认为重定向应用了两次,这可以解释为什么我仍然没有出现任何错误消息,但仍然显示旧网址,但我不知道在哪里应用[R = 301,L]以及不使用它的地方。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

因此除了RewriteRules之外,您还必须重定向301:

RedirectMatch 301 ^/index.php$ /home [L]
RedirectMatch 301 ^/index.php?content=home&val=([0-9]+)&lang=fr /acceuil-message-1$ [L]

PS:acceuil中有一个类型应该说accueil

参考:https://httpd.apache.org/docs/current/mod/mod_alias.html#redirectmatch

参考:http://www.larousse.fr/dictionnaires/francais/accueil/569