我目前在.htaccess文件中使用以下规则:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
这很有效,可以确保/myfile.php
和myfile
一样有效(在网址中没有扩展名)。它还可以毫无问题地处理查询字符串,因此myfile?var=foo
也可以。
问题是这些在Google Analytics中注册为两个单独的文件。因此,虽然myfile.php
可能是我网站上第三个最受欢迎的网页,但是对于X次访问,myfile
可能是我网站上访问次数最多的第五页。
如何进行硬重定向,而不是“接受任何一种”规则?
答案 0 :(得分:2)
尝试使用此规则重定向.php
个文件的请求:
RewriteCond %{THE_REQUEST} ^GET\ /(([^/?]*/)*[^/?]+)\.php
RewriteRule ^.+\.php$ /%1 [L,R=301]
答案 1 :(得分:2)
你能改变你的最后一次RewriteRule吗?
RewriteRule ^(.*)$ $1.php [L,R=301]
这会将“myfile”重定向到“myfile.php”。
此外,您还可以使用规则调整Google Analytics内部的内容。虽然这可能不是一个理想的解决方案。
ETA :如果您希望myfile.php重定向到myfile,请尝试将其替换为上一条规则:
RewriteRule ^(.+)\.php$ $1 [L,R=301]
答案 2 :(得分:1)
您可以在页面中添加
<link rel="canonical" href="..." />
答案 3 :(得分:0)
花了我几个小时......但我相信我终于找到了答案。
// The Original
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
// Add This
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]