【问题标题】:htaccess simulate subdomain to subdirectory in Wordpresshtaccess 在 Wordpress 中模拟子域到子目录
【发布时间】:2017-08-22 18:49:46
【问题描述】:

我需要开发一个可以写入 WP htaccess 文件并“模拟”子域的插件。

我在 example.com

上有一个带有基本 htaccess 的新 WP 安装
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

有没有一种方法可以通过 htaccess 访问 about.example.com 我看到页面 example.com/about,而无需更改 URL(这意味着我仍然在浏览器地址栏中看到 about.example.com)?

另外,如果我访问 about.example.com/category1,我是否会看到页面 example.com/about/category1

我尝试通过将以下代码添加到 htaccess 的末尾来使用它,但它不起作用:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example.com.com$
RewriteRule ^(/)?$ about [L]

【问题讨论】:

    标签: php wordpress apache .htaccess mod-rewrite


    【解决方案1】:

    您应该可以在.htaccess 中使用以下规则:

    RewirieEngine On
    
    RewriteCond %{HTTP_HOST} ^about.example.com [OR]
    RewriteCond %{HTTP_HOST} ^www.about.example.com
    RewriteRule ^(.*) http://example.com/about/$1 [P] 
    

    它的作用是检查地址about.example.com,如果满足条件,它应该重定向到example.com/about/....,但保留原始地址。

    [P] 标志使请求由mod_proxy 处理,并通过代理请求进行处理。

    但是,请记住,使用 mod_proxy 可能会导致安全问题:

    在构建规则的目标 URL 时要小心,考虑到 允许客户端影响的安全影响 您的服务器将充当代理的 URL。确保方案 URL 的主机名部分要么是固定的,要么不允许 客户的不当影响。

    通常使用.htaccess,您不能从一个域转到另一个保留原始 URL 的域。如上所述,这可能是一场安全噩梦。但是,由于这是一个子域,它应该工作。

    确保在测试之前清除缓存。

    替代方案

    您可以使用ProxyPass - 这将是一个更安全的选择。您可以通过 Apache 文档via this link. 找到有关如何使用它的更多信息,但这需要在高于.htaccess 的级别上完成。通过配置文件。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-21
      • 2023-03-06
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多