使用PHP编辑.htaccess
我有一个.htaccess,可以将域映射到文件夹使用PHP编辑.htaccess,php,.htaccess,mapping,dns,edit,Php,.htaccess,Mapping,Dns,Edit,我有一个.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文件的
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脚本添加到其中。这可能适用于您的情况: amend.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###
假设$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
之外的任何域映射到与域名同名的文件夹
RewriteCond %{ENV:REDIRECT_STATUS} ^$
ReWriteCond %{HTTP_HOST} !maindomain.com
ReWriteCond %{HTTP_HOST} (.*)
ReWriteRule ^(.*)$ %1/$1 [L]
或者;将文件夹映射到域名,而不使用ltd
RewriteCond %{ENV:REDIRECT_STATUS} ^$
ReWriteCond %{HTTP_HOST} !maindomain.com
ReWriteCond %{HTTP_HOST} ^([^\.]*)
ReWriteRule ^(.*)$ %1/$1 [L]
这不完全是您想要的,但它可能适合您,并且不需要任何php。正如上面的一条评论所建议的,最好在这里用于您的案例,而不是直接尝试从php代码编辑.htaccess。以下是如何使用它的示例:
RewriteMap domainMap txt://path/to/domain-dir.txt
/path/to/domain dir.txt
,如下所示:
sub1 /subdir1
sub2 /foodir2
foo /bar
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
优势:有了此设置,您可以从php代码中编辑或重新创建文件
/path/to/domain dir.txt
,而无需打开一个巨大的安全漏洞。允许php代码直接编辑.htaccess。@Cyclone:如果操作正确,就不会有安全风险。简单地说,假设您的php脚本是web脚本,让web脚本更新web服务器配置(即.htaccess)是一个潜在的安全灾难。有时这可能无法避免,但要小心行事。是的,你试过什么?如果你没有这方面的经验,你应该设置一个RewriteMap
,它更容易附加,而不会出现语法问题。@ConradShultz:我认为你无法比较这些。编辑真实配置文件需要root权限,而.htaccess文件通常由PHP脚本可以访问的用户拥有。因此恶意/有缺陷的脚本无论如何都可以编辑它们。@ThiefMaster:htaccess会把事情搞砸的程度在很大程度上取决于其他变量(例如AllowOverride)。我们不知道在这种情况下是如何设置的。此外,我的.htaccess文件在Apache中是显式不可写的,因此恶意脚本无法因此对其进行编辑。没有httpd.conf文件,还有其他方法可以这样做吗?我在共享主机上。不幸的是没有,因为RewriteMap
指令只进入httpd.conf文件。然而,这只是httpd.conf中的一次更改。