首先 - 我已经在stackoverflow和谷歌搜索了相当多的答案,但到目前为止还未成功找到可能的解决方案,我们将非常感谢任何建议。
我有一个页面 www.mypage.com 并控制通过GET参数lang显示的语言 - > www.mypage.com/index.php?target=1&lang=en
现在,客户已在 united-domains ( www.mypage.it )注册域名,并希望每当域 www.mypage.it 是必需的。
提供商 united-domains 提供了一个名为URL-HIDING的解决方案,它基本上似乎将请求传递给我提供的URL +文件夹结构(如 www.mypage.com/lang /它 - 根据统一域的规格,它必须是文件夹结构,可能不是文件)
到目前为止对域名的调用: www.mypage.it 将通过URL-HIDING选项绑定到 www.mypage.com/lang/it/ 。
.htaccess文件将REQUESTS重写为实际目标:
RewriteEngine on
## check if query string contains NOT 'lang='
## (lang might be changed by user after initial request)
RewriteCond %{QUERY_STRING} !lang=
## redirect to page
RewriteRule ^(.*)$ http://www.mypage.com/index.php?target=1&lang=it
## check if query string contains 'lang='
RewriteCond %{QUERY_STRING} lang=
## Keep the existing query string using the Query String Append flag
RewriteRule ^(.*)$ http://www.mypage.com/index.php? [QSA]
问题当然是:CSS,javascript,image,...文件包含在相对路径
中<link href="scripts/style.css" rel="stylesheet" type="text/css">
<script src="scripts/media.js" type="text/javascript">
<img src="images/logo.jpg">
<a href="download/test.pdf">PDF</a>
因此相对请求 scripts / style.css 映射到 http://www.mypage.com/lang/it/scripts/style.css
我很遗憾地坚持联合域的URL-HIDING机制并改变每个相对路径 /scripts/media.js 不是一个选项,因为我必须改变很多代码。
有没有人有这方面的解决方案(我的.htaccess知识恐怕不是最好的) 我不能从每个请求中删除 lang / it / 并另外检查QUERY_STRING是否包含字符串 lang = ,如果它是简单的添加?lang =它
感谢到目前为止所有花时间阅读的内容 - 如果有人有建议我会非常感激! 保持健康, 的Matthias答案 0 :(得分:0)
这似乎可以解决问题!
在文件夹中: 的 www.mypage.com/lang/it / 强>
我说:
RewriteEngine on
## redirect if just folder is requested
RewriteCond %{REQUEST_URI} ^/lang/it/$
RewriteRule ^(.*)$ http://www.mypage.com/index.php?target=1&lang=it
## otherwise redirects if file does not exist
RewriteCond %{DOCUMENT_ROOT}/lang/it/$1 !-f
RewriteRule ^(.*)$ http://www.mypage.com/$1 [QSA]