[英]Edit .htaccess with PHP
我有一个.htaccess将域映射到文件夹。
RewriteEngine On
RewriteBase /
# redirect mapped domain
ReWriteCond %{HTTP_HOST} joshblease.uk.to
ReWriteCond %{REQUEST_URI} !gme-index/
ReWriteRule ^(.*)$ gme-index/$1 [L]
有没有办法使用PHP编辑/添加额外的域映射到文件?
简单地说,我想获取.htaccess文件的内容并使用PHP脚本添加到它们中。
正如上面的一条评论中所建议的那样,最好在这里使用RewriteMap ,而不是直接尝试从PHP代码编辑.htaccess。 以下是如何使用它的示例:
将以下行添加到httpd.conf文件中:
RewriteMap domainMap txt://path/to/domain-dir.txt
像这样创建一个文本文件/path/to/domain-dir.txt
:
sub1 /subdir1 sub2 /foodir2 foo /bar
在.htaccess文件中添加以下行:
Options +FollowSymLinks -MultiViews RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)\\.domain\\.com$ [NC] RewriteRule ^$ ${domainMap:%1} [L,R]
实际上,所有这些方法都是将这些重定向到位:
sub1.domain.com/ => sub1.domain.com/subdir1
sub2.domain.com/ => sub2.domain.com/foodir2
foo.domain.com/ => foo.domain.com/bar
优点:有了这个设置,您可以根据需要编辑或重新创建文件/path/to/domain-dir.txt
,而无需打开巨大的安全漏洞,允许php代码直接编辑.htaccess。
这可能适用于您的情况:
修改.htaccess以查看以下内容:
RewriteEngine On
RewriteBase /
# redirect mapped domain
ReWriteCond %{HTTP_HOST} joshblease.uk.to
ReWriteCond %{REQUEST_URI} !gme-index/
ReWriteRule ^(.*)$ gme-index/$1 [L]
###CUSTOM RULES###
PHP脚本假设$规则保持新生成的规则被修改;
$htaccess = file_get_contents('/path/to/.htaccess');
$htaccess = str_replace('###CUSTOM RULES###', $rules."\n###CUSTOM RULES###", $htaccess);
file_put_contents('/path/to/.htaccess', $htaccess);
上面的例子是理论,并且尚未经过测试,将依赖于.htaccess权限和脚本的权限。
您可以使用以下htaccess将除maindomain.com
之外的任何域maindomain.com
到与域名同名的文件夹。
RewriteCond %{ENV:REDIRECT_STATUS} ^$
ReWriteCond %{HTTP_HOST} !maindomain.com
ReWriteCond %{HTTP_HOST} (.*)
ReWriteRule ^(.*)$ %1/$1 [L]
交替; 将文件夹映射到没有有限公司的域名。
RewriteCond %{ENV:REDIRECT_STATUS} ^$
ReWriteCond %{HTTP_HOST} !maindomain.com
ReWriteCond %{HTTP_HOST} ^([^\.]*)
ReWriteRule ^(.*)$ %1/$1 [L]
不完全是你想要的,但它可能适合你,并且不需要任何PHP。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.