115 lines
5.5 KiB
PHP
115 lines
5.5 KiB
PHP
<?php namespace Phpcmf\Controllers\Admin;
|
|
|
|
class Urlrule_code extends \Phpcmf\App
|
|
{
|
|
|
|
public function index() {
|
|
|
|
$domain = [];
|
|
list($module, $site) = \Phpcmf\Service::M('Site')->domain();
|
|
$domain[$site['site_domain']] = dr_lang('本站电脑域名');
|
|
$site['mobile_domain'] && $domain[$site['mobile_domain']] = dr_lang('本站手机域名');
|
|
if ($module) {
|
|
foreach ($module as $dir => $t) {
|
|
if ($site['module_'.$dir]) {
|
|
$domain[$site['module_'.$dir]] = dr_lang('%s电脑域名', $t['name']);
|
|
}
|
|
if ($site['module_mobile_'.$dir]) {
|
|
$domain[$site['module_mobile_'.$dir]] = dr_lang('%s手机域名', $t['name']);
|
|
}
|
|
}
|
|
}
|
|
|
|
$site = \Phpcmf\Service::M('Site')->config(SITE_ID);
|
|
if ($site['client']) {
|
|
foreach ($site['client'] as $t) {
|
|
if ($t['domain']) {
|
|
$domain[$t['domain']] = dr_lang('%s终端域名', $t['name']);
|
|
}
|
|
}
|
|
}
|
|
if (strpos($site['config']['SITE_DOMAIN'], '/') !== false) {
|
|
list($a, $b) = explode('/', $site['config']['SITE_DOMAIN']);
|
|
$root = '/'.$b;
|
|
} else {
|
|
$root = '';
|
|
}
|
|
$server = strtolower($_SERVER['SERVER_SOFTWARE']);
|
|
if (strpos($server, 'apache') !== FALSE) {
|
|
$name = 'Apache';
|
|
$note = '<font color=red><b>将以下内容保存为.htaccess文件,放到每个域名所绑定的根目录</b></font>';
|
|
$code = '';
|
|
|
|
// 子目录
|
|
$code.= '###当存在多个子目录格式的域名时,需要多写几组RewriteBase标签:RewriteBase /目录/ '.PHP_EOL;
|
|
if (isset($site['mobile']['mode']) && $site['mobile']['mode'] && $site['mobile']['dirname']) {
|
|
$code.= 'RewriteEngine On'.PHP_EOL.PHP_EOL;
|
|
$code.= 'RewriteBase /'.$site['mobile']['dirname'].'/'.PHP_EOL
|
|
.'RewriteCond %{REQUEST_FILENAME} !-f'.PHP_EOL
|
|
.'RewriteCond %{REQUEST_FILENAME} !-d'.PHP_EOL
|
|
.'RewriteRule !.(js|ico|gif|jpe?g|bmp|png|css)$ /'.$site['mobile']['dirname'].'/index.php [NC,L]'.PHP_EOL.PHP_EOL;
|
|
$code.= '####以上目录需要单独保持到/'.$site['mobile']['dirname'].'/.htaccess文件中';
|
|
}
|
|
// 主目录
|
|
$code.= 'RewriteEngine On'.PHP_EOL.PHP_EOL;
|
|
$code.= 'RewriteBase '.$root.'/'.PHP_EOL
|
|
.'RewriteCond %{REQUEST_FILENAME} !-f'.PHP_EOL
|
|
.'RewriteCond %{REQUEST_FILENAME} !-d'.PHP_EOL
|
|
.'RewriteRule !.(js|ico|gif|jpe?g|bmp|png|css)$ '.$root.'/index.php [NC,L]'.PHP_EOL.PHP_EOL;
|
|
} elseif (strpos($server, 'nginx') !== FALSE) {
|
|
$name = $server;
|
|
$note = '<font color=red><b>将以下代码放到Nginx配置文件中去(如果是绑定了域名,所绑定目录也要配置下面的代码)</b></font>';
|
|
// 子目录
|
|
$code = '###当存在多个子目录格式的域名时,需要多写几组location标签:location /目录/ '.PHP_EOL;
|
|
if (isset($site['mobile']['mode']) && $site['mobile']['mode'] && $site['mobile']['dirname']) {
|
|
$code.= 'location '.$root.'/'.$site['mobile']['dirname'].'/ { '.PHP_EOL
|
|
.' if (-f $request_filename) {'.PHP_EOL
|
|
.' break;'.PHP_EOL
|
|
.' }'.PHP_EOL
|
|
.' if ($request_filename ~* "\.(js|ico|gif|jpe?g|bmp|png|css)$") {'.PHP_EOL
|
|
.' break;'.PHP_EOL
|
|
.' }'.PHP_EOL
|
|
.' if (!-e $request_filename) {'.PHP_EOL
|
|
.' rewrite . '.$root.'/'.$site['mobile']['dirname'].'/index.php last;'.PHP_EOL
|
|
.' }'.PHP_EOL
|
|
.'}'.PHP_EOL.PHP_EOL;
|
|
}
|
|
// 主目录
|
|
$code.= 'location '.$root.'/ { '.PHP_EOL
|
|
.' if (-f $request_filename) {'.PHP_EOL
|
|
.' break;'.PHP_EOL
|
|
.' }'.PHP_EOL
|
|
.' if ($request_filename ~* "\.(js|ico|gif|jpe?g|bmp|png|css)$") {'.PHP_EOL
|
|
.' break;'.PHP_EOL
|
|
.' }'.PHP_EOL
|
|
.' if (!-e $request_filename) {'.PHP_EOL
|
|
.' rewrite . '.$root.'/index.php last;'.PHP_EOL
|
|
.' }'.PHP_EOL
|
|
.'}'.PHP_EOL;
|
|
} else {
|
|
$name = $server;
|
|
$note = '<font color=red><b>无法为此服务器提供伪静态规则,建议让运营商帮你把下面的Apache规则做转换</b></font>';
|
|
$code = 'RewriteEngine On'.PHP_EOL
|
|
.'RewriteBase /'.PHP_EOL
|
|
.'RewriteCond %{REQUEST_FILENAME} !-f'.PHP_EOL
|
|
.'RewriteCond %{REQUEST_FILENAME} !-d'.PHP_EOL
|
|
.'RewriteRule !.(js|ico|gif|jpe?g|bmp|png|css)$ /index.php [NC,L]';
|
|
}
|
|
|
|
\Phpcmf\Service::V()->assign([
|
|
'name' => $name,
|
|
'code' => $code,
|
|
'note' => $note,
|
|
'domain' => $domain,
|
|
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
|
|
[
|
|
'伪静态代码' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-link'],
|
|
]
|
|
),
|
|
'count' => $code ? dr_count(explode(PHP_EOL, $code)) : 0,
|
|
]);
|
|
\Phpcmf\Service::V()->display('urlrule_code.html');exit;
|
|
}
|
|
|
|
}
|