首页 > 解决方案 > htaccess 重写和重定向不起作用

问题描述

我有一个特殊的场景:旧的网站网址是这样制作的:http://www.mysite.it/it/my-old-link

新的是这样制作的:http://www.mysite.it/vini.php?famiglia=my-new-link

我想http://www.mysite.it/it/my-old-link指向指向的链接http://www.mysite.it/vini.php?famiglia=my-new-link

这是为了保持 SEO 位置。http://www.mysite.it/it/my-old-link will be redirected所以,当有人点击搜索结果http://www.mysite.it/vini.php?famiglia=my-new-link

但是我找不到编辑 .htaccess 文件的方法。

我已经设置了重写规则和重定向,但它不起作用;这是 .htaccess 文件的示例:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /

RewriteRule ^/?([^/d]+)/?$ /vini.php?famiglia=$1 [L,QSA]

Redirect 302 http://www.mysite.it/it/my-old-link http://www.mysite.it/my-new-link

ErrorDocument 404 http://www.mysite.it/index.php

但它不起作用:如果我http://www.mysite.it/it/my-old-link在浏览器中输入,我会收到 404 页面错误(index.php)

但是:如果我http://www.mysite.it/my-new-link在浏览器上输入,我会得到正确的页面。

有没有办法解决这个问题?

TIA托尼

标签: apache.htaccessmod-rewriteurl-rewritingfriendly-url

解决方案


In case you are looking for specific rule as per shown samples then try following.

RewriteEngine ON
RewriteRule ^it/my-old-link/?$ vini.php?famiglia=my-new-link [NC,L]


In case you are looking for Generic rules, where if a URI is NOT present as a file or directory then try following. Please make sure either you put above or following rules only at a time.

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ vini.php?famiglia=my-new-link [NC,L]

推荐阅读