mod_rewrite在Chrome和Internet Explorer中不起作用,就像在Firefox中一样



我有一个类似example.test.com的域。该网站由三个不同的html文件组成:

  • index . html
  • products.html
  • contact.html

如果用户输入example.test.com/index.html, url将被重定向到example.test.com

example.test.com/index也应该变成example.test.com

example.test.com/contact.html应该是example.test.com/contact,依此类推。

url前不能有www

我想出了以下规则:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^example.test.com$ [NC]
RewriteRule ^(.*)$ http://example.test.com/$1 [L,R=301]
RewriteCond %{SCRIPT_FILENAME}/ -d
RewriteCond %{SCRIPT_FILENAME}.html !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+).html$ /$1 [R=301,L]
RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(html?|php) HTTP/
RewriteRule ^index.(html?|php)$ http://example.test.com/ [R=301,L]

在Firefox中一切工作如预期,但在Chrome和Internet Explorer example.test.com/index.html只重定向到example.test.com/index,我不知道为什么。

我不太确定你想用^[A-Z]{3,9}部分实现什么,但这里的罪魁祸首是在你最后一个条件下索引末尾的点。改为:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index(|.html|.php) HTTP/
RewriteRule ^index.(html?|php)$ http://example.test.com/ [R=301,L]

最新更新