[英]Redirect subdirectory names to the index.php for pretty URLs using mod_rewrite
我在基于框架(Laravel 4)的Apache服务器上有一个网站,该网站带有.htaccess文件,用于删除结尾的斜杠并将不存在的文件重定向到index.php以获得漂亮的URL。
我使用URL的第一个片段进行本地化,例如mysite.com/en/about
。 我也有用于本地化资源文件的物理语言文件夹,例如/en/images/hello.jpg
物理语言文件夹以这种方式破坏了.htaccess文件中的URL重定向:
mysite.com/en
自动重定向到文件夹根目录: 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
带来了相关文件 问题似乎是您的斜杠删除规则。 用以下规则替换它:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]
此规则将跳过目录以删除斜杠,因此/en/
将不受影响。
PS:确保在新的浏览器中对此进行测试,以避免301缓存问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.