我们的WordPress站点位于子文件夹中/subwp/, 以及除主页外的所有页面。这是根文件夹:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /subwp/
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subwp/index.php [L]
</IfModule>
访问主页时(例如。
http://example.com/) 我获得托管提供商的默认站点(“此域由xyz托管”)。所有其他被重击的页面都工作得很好。
只是为了确保托管提供程序不会以某种方式将请求自动重定向到/, 我创建了一个名为index.php 只是“胡说八道”,看看它是否会起作用,然后如果我访问http://example.com, 我看到文本“blah”(现在所有其他页面都显示blah:)
我有点卡住了。有什么想法吗?
最合适的回答,由SO网友:MrWhite 整理而成
因为当您请求文档根目录时.htaccess 不匹配,请求不会重写到子目录。因此请求失败,不管文档根的默认响应是什么(例如。/index.php 如果存在)。
只需添加另一条指令即可重写主页。
(第一个RewriteRule 指令也不正确。)
例如:
RewriteEngine On
RewriteBase /subwp/
RewriteRule ^[^/]+/index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
# Special case - rewrite requests for the homepage (which is also a directory)
RewriteRule ^$ index.php [L]
因为您正在使用
RewriteBase 您可以删除
/subwp/ 上的前缀
RewriteRule 替换字符串(这就是使用
RewriteBase).