.htaccess和301重定向(动态页面)

时间:2012-03-02 06:51:06

标签: .htaccess

在我的网站上,我有一些以这种方式构建的页面:

www.mysite.com/x/y.php?query=z

我在.htaccess文件中写了一条规则,用这种方式重写页面:

www.mysite.com/x-y/z

现在,由于我在使用这些网址时遇到了一些SEO问题,我希望我的.htaccess文件能够重定向这两个网址(www.mysite.com/x/y.php?query=z和www.mysite.com/ xy / z)这样的事情:

www.mysite.com/x-y/z.html

我可以这样做吗?我发布了你的.htaccess规则:

AuthType Basic 
RewriteEngine on
RewriteRule ([^/]+)-([^/]+)/([^/]+) $1/$2.php?titolo=$3 [L]

提前致谢!

来自意大利的问候


修改

嗨,正如我在第一篇文章中写的那样,我需要在我的网站中重定向一些页面。我有一些像这样的页面:

www.mysite.com/dir/subdir/page.php?titolo=foo

现在写成这样(我使用之前发布的代码):

www.mysite.com/dir/subdir-page/foo

现在我想301将www.mysite.com/dir/subdir/page.php?titolo=foo和www.mysite.com/dir/subdir-page/foo重定向到:

www.mysite.com/dir/subdir-page/foo.html

我将htaccess放在“dir”文件夹中。但是你给我的代码不起作用,对不起......因为我是htaccess的新手,所以我非常感谢你的帮助。

感谢意大利提前和最好的问候

1 个答案:

答案 0 :(得分:1)

使用此代码:

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

## External 301 redirects
# /dir/subdir-page/foo to /dir/subdir-page/foo.html
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_URI} !\.html$ [NC]
RewriteRule ^ %{REQUEST_URI}.html [R=302,L]

# /dir/subdir/page.php?titolo=foo to /dir/subdir-page/foo.html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+[^/]+/([^/]+)/([^.]+)\.php\?titolo=([^\s]+)\s [NC]
RewriteRule ^ %1-%2/%3.html? [R=302,L,NC]

## Internal redirect
# /dir/subdir-page/foo.html to /dir/subdir/page.php?titolo=foo
RewriteRule ^([^-]+)-([^/]+)/([^.]+)\.html$ $1/$2.php?titolo=$3 [NC,L,QSA]