用PHP编辑.htaccess

Jos*_*ase 7 php mapping dns .htaccess edit

我有一个.htaccess将域映射到文件夹.

RewriteEngine On
RewriteBase /

# redirect mapped domain
ReWriteCond %{HTTP_HOST} joshblease.uk.to
ReWriteCond %{REQUEST_URI} !gme-index/
ReWriteRule ^(.*)$ gme-index/$1 [L]
Run Code Online (Sandbox Code Playgroud)

有没有办法使用PHP编辑/添加额外的域映射到文件?

简单地说,我想获取.htaccess文件的内容并使用PHP脚本添加到它们中.

anu*_*ava 5

正如以上评论之一所建议的,最好在这里使用RewriteMap而不是尝试直接从PHP代码编辑.htaccess。这是一个示例如何使用它:

  1. 将以下行添加到您的httpd.conf文件中:

    RewriteMap domainMap txt://path/to/domain-dir.txt
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个文本文件,/path/to/domain-dir.txt如下所示:

    sub1 /subdir1
    sub2 /foodir2
    foo /bar
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将这些行添加到您的.htaccess文件中:

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
    RewriteRule ^$ ${domainMap:%1} [L,R]
    
    Run Code Online (Sandbox Code Playgroud)

实际上,所有这些方法就是将这些重定向设置到位:

  • 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代码编辑或重新创建文件,而不会造成巨大的安全漏洞,允许php代码直接编辑.htaccess。