我在Apache服务器上有一个基于框架(Laravel 4)的网站,该框架附带.htaccess文件,用于删除尾部斜杠,并将不存在的文件重定向到index.php,以获取漂亮的URL。
我使用网址的第一个片段进行本地化,例如mysite.com/en/about
。我还有本地化资源文件的物理语言文件夹,例如/en/images/hello.jpg
物理语言文件夹以这种方式破坏.htaccess文件中的URL重定向:
mysite.com/en
会自动重定向到文件夹root:mysite.com/en/
因此mysite.com/en
不能用于语言索引,我使用/en/home
作为解决方法。
股票.htaccess文件中的部分:
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
是否可以将文件夹名称重定向到index.php
,而无需对其进行硬编码。那样;
mysite.com/en
被重定向到index.php
mysite.com/en/images/about.jpg
带来相关文件答案 0 :(得分:1)
问题似乎是你的尾随删除规则。用此规则替换它:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]
此规则将跳过删除斜杠的目录,因此/en/
将不受影响。
PS:请务必在新浏览器中对此进行测试,以避免301缓存问题。