我有一个奇怪的问题,在某些用户计算机上,重写的网址会解析为地址栏中的实际网址。
我的htaccess文件中有以下内容
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我注意到这些出现在我的分析中,这弄乱了我的统计数据,因为一页有两个网址。
这方面的一个例子是:
http://example.com/news/the-first-post
http://example.com/index.php?url=news/the-first-post
我有时可以通过直接在地址栏中输入重写的URL来复制问题。
答案 0 :(得分:1)
你的规则如下:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+index\.php\?url=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
现在,所有/index.php?url=news/the-first-post
结构的网址都将301(永久)重定向到/news/the-first-post
。