其它补充
补充,是指使用中隐藏用法及其它功能等。
通用 Url 转发接口
什么叫通用转发接口?
例如地址为:http://lang-php.com/license。 /?=load 参数是表示加载页面功能,license 参数是调用 routes 目录下的 license.php 文件。
如果没有找到匹配的文件或者没有参数,就默认加载 home()。例如:
- 1. 主索引脚本。
-
<?php
if(isset($_GET['load'])) {
if(is_file($_GET['load'].".php")) {
include $_GET['load'].".php";
exit();
} else {
echo "没有找到" . $_GET['load'] . "文件.";
}
}
?>
- 2. Rewrite(服务器重写技术)
- Apache
-
保存文件名 ( .htaccess ) 到目录下即可。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ /?load=$1 [QSA,PT,L]
- Nginx
-
if (!-e $request_filename) {
rewrite ^/(.+)$ /?load=$1 last;
}
没有使用规则前:-
使用后:-
官方网站已添加该规则,为保持发布版相同,请手动访问演示。
使用 Javascript (JS) 切换语言并隐藏参数
什么叫通过 Javascript (JS) 来切换语言并隐藏参数?目的就是去掉后缀。
使用模式 1 前:http://lang-php.com/?lang=zh-cn;
使用模式 2 后:http://lang-php.com,后缀没有了。
- 1. Javascript (JS) 脚本代码。
-
<script type="text/javascript">
/*- lang-php JavaScript Library v5.1
* - http://lang-php.com
* - Copyright 2016, FengYi, Inc.
* - Released under the MIT license
- http://lang-php.com/license
* - Date: 2016-10-01
- lang-php JavaScript Library v5.1
- /
function refreshlang(value) {
window.location.href = window.location.pathname + '?lang=' + value;
}function qlang(value) {
var days = '30';if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = "mark_lang"+"="+value.toLowerCase()+expires+"; path=/";
window.location.href="../";
}
function lang(value) {
var days = '30';if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = "lang"+"="+value.toLowerCase()+expires+"; path=/";
var rurl = window.location.toString();
//Remove anchor from url using the split
rurl = rurl.split("#")[0];
if(location.href.indexOf("?")==-1 || location.href.indexOf(name+'=')==-1) {
skip(rurl);
} else {
skip(delQueStr(rurl, "lang"));
}
}
function skip(url) {
// Internet Explorer 8 and lower fix
if (navigator.userAgent.match(/MSIE\s(?!9.0)/)) {
var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
} else {
// All other browsers
window.location.replace(url);
}
}function delQueStr(url, ref)
{
var str = "";if (url.indexOf('?') != -1)
str = url.substr(url.indexOf('?') + 1);
else
return url;
var arr = "";
var returnurl = "";
var setparam = "";
if (str.indexOf('&') != -1) {
arr = str.split('&');
for (i in arr) {
if (arr[i].split('=')[0] != ref) {
returnurl = returnurl + arr[i].split('=')[0] + "=" + arr[i].split('=')[1] + "&";
}
}
return url.substr(0, url.indexOf('?')) + "?" + returnurl.substr(0, returnurl.length - 1);
}
else {
arr = str.split('=');
if (arr[0] == ref)
return url.substr(0, url.indexOf('?'));
else
return url;
}
}
</script>
源码:latest.zip -> /assets/js/lang.js- 2. HTML 模板。
-
<html>
<headl>
<script src="lang.js"></script>
</headl>
<body>
<a href="?lang=en-us">切换</a>
</body>
</html>
跳转到指定的域名
什么是跳转到指定的域名?部分示例都是通过读取并匹配目录下的文件,想实现跳转到指定的域名,请参考以下代码:
- 添加代码到需要跳转的页面!
-
<php
/ sample 1 /
header("Location: http://us.lang-php.com");/* sample 2 */
$Global_Domain = "http://lang-php.com/";
header("Location:" . $Global_Domain . "us");
?>
源码:latest.zip -> /routes/Domain-Jump-Sample.php