我的网站可以从2种不同的uri查看:
www.mywebsite.com/magazine或www.mywebsite.com/index.php/magazine
这是我的网站的副本,这对谷歌来说非常糟糕。有人知道如何禁用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]
答案 0 :(得分:1)
使用mod_rewrite
撰写RewriteRule
来执行从/index.php/magazine到/ magazine的永久重定向。
编辑5/21/11美国东部时间上午9:40
经过一些“快速”测试后,我意识到如果您尝试将其应用于文档根目录中的子文件夹,则以下规则将不起作用(例如:www.mysite.com/test/index.php/go/somewhere )。这是因为mod_rewrite
的工作方式,Apache mod_rewrite
Documentation上有记录,并说:
注意:每个目录上下文中的模式匹配
永远不要忘记应用了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]
希望对你有用!