mod-重写以与其他服务器和用户目录一起使用
mod-rewrite to work with oth server and userdir
我正在使用 Apache mod_rewrite 和 userdir。
我想编写一个适用于任何地方的 .htaccess,有没有办法删除 RewriteBase 或使用 Apache 变量设置它?
这是我的 .htaccess 文件:
RewriteEngine On
RewriteBase /~leo/lstronic/v2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . ./index.php [QSA,L]
我还需要保留亲戚URL,我就是这样做的:
$config['root_directory']=__DIR__;
$config['project_subdirectory']=str_replace("/home/leo/public_html/","/~leo/",$config['root_directory']);
//$config['project_subdirectory']=str_replace($_SERVER['DOCUMENT_ROOT'],"",$config['root_directory']);
有没有办法让最后两行无处不在?
里奥
您可以使用此规则在环境变量中动态生成 RewriteBase
并在您的规则中使用它。
RewriteEngine On
RewriteCond %{REQUEST_URI}:: ^(.*?/)(.*)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . %{ENV:BASE}index.php [L]
我正在使用 Apache mod_rewrite 和 userdir。 我想编写一个适用于任何地方的 .htaccess,有没有办法删除 RewriteBase 或使用 Apache 变量设置它?
这是我的 .htaccess 文件:
RewriteEngine On
RewriteBase /~leo/lstronic/v2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . ./index.php [QSA,L]
我还需要保留亲戚URL,我就是这样做的:
$config['root_directory']=__DIR__;
$config['project_subdirectory']=str_replace("/home/leo/public_html/","/~leo/",$config['root_directory']);
//$config['project_subdirectory']=str_replace($_SERVER['DOCUMENT_ROOT'],"",$config['root_directory']);
有没有办法让最后两行无处不在?
里奥
您可以使用此规则在环境变量中动态生成 RewriteBase
并在您的规则中使用它。
RewriteEngine On
RewriteCond %{REQUEST_URI}:: ^(.*?/)(.*)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . %{ENV:BASE}index.php [L]