我一直在努力修复网站的网址结构。
我需要的是每个网址:
/main.php?mod=PageNameHere
要重写,301
重定向到:
/PageNameHere.html
我已经尝试过这个RewriteRule:
RewriteRule ^([^-]*)\.html$ /main.php?mod=$1 [L]
但它所做的就是让这两个网页上的页面都可用。我的导航仍然链接到main.php?mod = PageNameHere URL,所以我需要的是一种强制它重定向301的方法。
答案 0 :(得分:0)
告诉apache Rewrite 301
。否则它只是映射 url
RewriteRule ^([^-]*)\.html$ /main.php?mod=$1 [R=301,L]
答案 1 :(得分:0)
您需要有2个单独的重写规则:
/PageNameHere.html
至/main.php?mod=PageNameHere
,与您已有的内容非常相似。/main.php?mod=PageNameHere
添加到/PageNameHere.html
,这是您目前没有的内容。以下是适合您的代码:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# 1. for internal forwarding
RewriteRule ^([^.]*)\.html$ /main.php?mod=$1 [L,NC,QSA]
# 2. for external redirection
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+main\.php\?mod=([^\s&]+) [NC]
RewriteRule ^ /%1? [L,R=301]