在我的网站上,我有一些以这种方式构建的页面:
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的新手,所以我非常感谢你的帮助。
感谢意大利提前和最好的问候
答案 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]