我们的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
).