htaccess - Silverstripe 中的 Wordpress

htaccess - Wordpress inside Silverstripe

我在 Silverstripe 安装的子目录中安装了 Wordpress。由于重写,我无法让 Wordpress 网站的前端显示,但是如果我附加 /index.php.

后端就没有问题

如果我尝试将 /index.php 附加到 /subdirectory/index.php,它会重定向回子目录。 WP htaccess 中没有规则,所以我认为 Silverstripe 不喜欢这些扩展。

我尝试通过在重写引擎之后将其添加到 Silvestripe 站点来排除整个子目录文件夹:

RewriteCond %{REQUEST_URI} !^/subdirectory/.* 

没弄对。有没有办法让 'subdirectory' 做自己的事?

重写规则也适用于子文件夹。如果您 在您的 WP 子文件夹中没有 .htaccess,您应该创建一个并禁用 URL 重写该文件夹。因此,将具有以下内容的 .htaccess 放入您的 WP 文件夹中:

<IfModule mod_rewrite.c>
    RewriteEngine Off
</IfModule>

当然你也可以定义自定义重写规则......重要的是,你有自己的 .htaccess.

您应该在 SilverStripe 根文件夹和 WordPress 文件夹中都有规则,否则 WordPress 不会 运行 没有 index.php。像这样的东西应该可以工作(尽管不是 100% 确定 WordPress 规则):

SilverStripe .htaccess

<IfModule mod_rewrite.c>
    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine On
    RewriteBase '/'

    RewriteCond %{REQUEST_URI} !^/wordpress/.*
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !\.php$
    RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]
</IfModule>

/wordpress 文件夹中的 Wordpress .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]
</IfModule>