Php 虚拟子文件夹。htaccess出于源代码目的忽略语言代码
我使用以下规则进行语言翻译 两者都很好:Php 虚拟子文件夹。htaccess出于源代码目的忽略语言代码,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我使用以下规则进行语言翻译 两者都很好: RewriteRule ^([a-z]{2})/?$ /index.php?act=setlang&val=$1 [L,CO=LANG:$1:%{HTTP_HOST}] RewriteRule ^([a-z]{2})/([a-zA-Z0-9-]+)\.php$ $2.php?act=setlang&val=$1 [L,CO=lang:$1:%{HTTP_HOST}] 因此,请访问www.mysite.com/en/test.php,
RewriteRule ^([a-z]{2})/?$ /index.php?act=setlang&val=$1 [L,CO=LANG:$1:%{HTTP_HOST}]
RewriteRule ^([a-z]{2})/([a-zA-Z0-9-]+)\.php$ $2.php?act=setlang&val=$1 [L,CO=lang:$1:%{HTTP_HOST}]
因此,请访问www.mysite.com/en/test.php,这将如预期的那样起作用
但是,如果我将基本URL从mysite.com更改为mysite.com/(2letterlangcodehere)
`
因此,所有链接都会自动带有lang前缀,然后一切都会变得一团糟(我认为这是由于相对路径,因为我想在mysite.com/(2letterlangcodehere)下查找某些资源,这些资源显然不存在,因为我没有实际创建文件夹)
我如何让mysite.com/(langcodehere)在视觉上显示并执行上述规则,但本质上,此文件夹仅指向mysite.com/。对于脚本、css、源透视图,可以使用.htaccess吗?尝试在现有规则之前插入此规则:
RewriteRule ^[a-z]{2}/(.+?\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [L,NC,R=301]
如果这不起作用,则您有2个选项:
在css、js、图像文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://
或斜杠/
开头
尝试将此添加到页面标题中:
谢谢,它部分起作用了,但这是正确的解决方案,我想我必须坚持绝对URL。。因为lang路径可能存在,也可能不存在,所以不能选择相对路径。是的,这是正确的,绝对URL最适合用于虚拟文件夹/漂亮URL。