我的问题非常简单,但我是.htaccess的新手,并且没有看到我能理解和应用的互联网示例......
我有两个索引:index.php
和index_fr.php
。
我希望index_fr.php
为fr/index.php
,如果可能,请将使用法语的浏览器重定向到fr/index.php
,将所有其他浏览器重定向到index.php
。
另外,我想知道当我尝试从img/picture.jpg
根访问fr/
时会发生什么。它是否会调查fr/img/picture.jpg
(在这种情况下图像会被破坏)?
谢谢你们;)
答案 0 :(得分:0)
你的问题有点模糊,但我认为这就是你要找的东西:
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/ [NC]
RewriteCond %{REQUEST_URI} !^/fr/
RewriteRule ^(.+)$ /fr/$1 [L,R=301]
RewriteRule ^/?fr/index\.php$ /index_fr.php [L]
这将在内部重写对/fr/index.php
到/index_fr.php
的传入请求,而不会触及任何路径组件不与前导两个字母模式匹配的请求(例如{{1}前面有三个字母)。
为了实现这一点,必须启用http服务器重写模块,还必须启用动态配置文件(/img/...
)的解释,并且保存该规则的文件必须位于{{1那个http主机。
一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。