我出现两次列出的网站链接时出现问题,例如,www.example.com/example.com/index.php?etc....
时应该只显示www.example.com/index.php?etc....
我的链接是相对的,显示为:/index.php?etc...
我搜索了我的网页链接,并没有看到这些错误链接是如何生成的,因为它们本身并不是我自己所知道的最好的链接。
所以...我正在考虑将.htaccess规则重命名为www.example.com/example.com/
到www.example.com/
我目前的重命名规则是:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php
RewriteCond %{REQUEST_URI} !^/img/favicon\.ico [NC]
RewriteCond %{REQUEST_URI} favicon\.ico [NC]
RewriteRule (.*) http://example.com/img/favicon.ico [R=301,L]
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
添加新规则:(更新)
#remove double domain name - put this directly after RewriteBase
RewriteRule ^(.*)example.com/example.com(.*)$ $1example.com$2 [R=301]
我的问题:
新规则不起作用。什么是不正确的?我已经使用preg_replace对它进行了测试,但是在htaccess中它没有重命名。
我知道我需要删除前一个RewriteRule中的[L,R = 301],以便它可以到达最后一行。有没有更好的方法来使用[L,R = 301]所以我不会得到无限循环?
感谢您的帮助。
答案 0 :(得分:0)
最后想出了重写。仍在研究为什么问题开始...
我学到的是使用REQUEST_URI,在条件
中取消匹配主机名RewriteCond %{REQUEST_URI} (.*)/example.com(.*) [NC]
RewriteRule ^(.*) %1%2 [L,R=301]