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。