3

一段时间以来,我一直在尝试修复我网站的 url 结构。

我需要的只是每个 URL:

/main.php?mod=PageNameHere 

被重写并301重定向到:

/PageNameHere.html

我已经尝试过这个 RewriteRule:

RewriteRule ^([^-]*)\.html$ /main.php?mod=$1 [L]

但它所做的只是使页面在两个 URL 上都可用。我的导航仍然链接到 main.php?mod=PageNameHere URL,所以我需要一种强制它进行 301 重定向的方法。

4

2 回答 2

0

您需要有 2 个单独的重写规则:

  1. 对于内部转发/PageNameHere.html/main.php?mod=PageNameHere,与您已有的非常相似。
  2. 对于外部重定向/main.php?mod=PageNameHere/PageNameHere.html301,你目前没有的东西。

这是应该为您工作的代码:

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]
于 2013-03-22T20:25:28.483 回答
0

告诉 apache 到Rewrite 301. 否则它只是映射url

RewriteRule ^([^-]*)\.html$ /main.php?mod=$1 [R=301,L]
于 2013-03-22T20:02:30.647 回答