0

我的网站可以从 2 种不同的 URI 中查看:

www.mywebsite.com/magazinewww.mywebsite.com/index.php/magazine

它会复制我的网站,这对 Google SEO 非常不利。有人知道如何禁用 index.php 浏览吗?

这是我的 htaccess 文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
4

1 回答 1

1

使用 amod_rewrite编写一个RewriteRule从 /index.php/magazine 到 /magazine 的永久重定向。

编辑 5/21/11 东部标准时间上午 9:40 经过一些“快速”测试后,我意识到如果您尝试将以下规则应用于文档根目录中的子文件夹(例如:www.mysite.com /test/index.php/go/somewhere)。这是因为工作方式mod_rewrite,它记录在Apachemod_rewrite文档中并说:

注意:每个目录上下文中的模式匹配

永远不要忘记 Pattern 应用于每个服务器配置文件中的完整 URL。但是,在每个目录的配置文件中,每个目录的前缀(对于特定目录总是相同的)被自动删除以进行模式匹配,并在替换完成后自动添加。此功能对于许多类型的重写都是必不可少的 - 如果没有此功能,您将始终必须匹配父目录,这并不总是可能的。有一个例外:如果替换字符串以 ' http://' 开头,则不会添加目录前缀,并且 会强制执行外部重定向或代理吞吐量(如果使用标志P )!

因此,如果您的.htaccess文件位于子目录中,您RewriteRule将变为:

RewriteEngine On
RewriteRule ^index\.php(/.*)$ /sub-dir-name$1 [R=301,QSA,L]

否则,如果您从域的根目录进行重写,则为:

RewriteEngine On
RewriteRule ^index.php(/.*)$ /$1 [R=301,QSA,L]

希望对你有用!

于 2011-05-21T04:01:28.657 回答