Safari将.htaccess视为与其他浏览器不同

时间:2012-05-23 22:50:44

标签: .htaccess

我有这样的链接:

www.domain.com/page.php?id=1#info

我只想隐藏.php来获取此信息:

www.domain.com/page?id=1#info

出于这个原因,我发现了这个.htaccess脚本:

上的RewriteEngine
# to make `/path/index.php` to /path/
RewriteCond %{THE_REQUEST} ^GET\s(.*/)index\.php [NC]
RewriteRule . %1 [NE,R=301,L]

RewriteCond %{THE_REQUEST} ^GET\s.+\.php [NC]
RewriteRule ^(.+)\.php$ /$1 [NE,R=301,L,NC]

RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [L]

这完全可以完成工作并且可以在除safari之外的所有浏览器中工作,它将输出:

www.domain.com/page?id=1

#info消失了。

浏览器如何解释.htaccess不同?有人可以帮我写出正确的.htaccess文件吗?

1 个答案:

答案 0 :(得分:2)

Safari的行为与每个浏览器的行为方式相同:

  

片段取决于文档MIME类型,并且由评估   客户端(Web浏览器)。客户不应发送 URI片段   服务器检索文档时没有帮助   本地应用程序(见下文)片段不参与HTTP   重定向。

     

Wikipedia: Fragment identifier

简单地说:#之后的URL部分不应由浏览器发送到服务器。浏览器应该在本地处理。这意味着在应用重定向(重写规则)时可能会松散片段。