根目录 ( http://www.example.com
) 中有一个 catch allindex.php
页面和一个.htaccess
文件。在这个根目录中,我有一个wordpress/
目录,其中包含(令人惊讶的是)一个 Wordpress 安装。
我的目标是当用户输入时,http://www.example.com
他们会被带到http://www.example.com/wordpress
这是我的重写规则:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/wordpress
RewriteRule ^/(.*)$ http://%{SERVER_NAME}/wordpress/$1 [L]
目前它似乎什么也没做 - 它仍然index.php
在根目录中加载。
我的重写规则应该是什么(我假设我使用的规则是错误的)?
答案1
在自己的目录中使用 WordPress 的正确方法是从 WordPress 目录复制 index.php 文件并将此行更改为:
require('./wp-blog-header.php');
对此:
require('./your_wordpress_directory/wp-blog-header.php');
完成此操作后,请返回管理选项并重新保存您的永久链接,WordPress 将根据您选择的站点 URL 和 WordPress URL 选项自动重写您的 .htaccess。
这些也可以在 wp-config.php 中定义
如果 WordPress 位于http://example.com/wordpress但您希望用户通过输入 example.com 来访问您的网站。
define('WP_HOME', 'http://example.com')
;
define('WP_SITEURL', 'http://example.com/wordpress');
答案2
具体来说,错误在于你没有告诉它如何处理该匹配。[L] 本身告诉它这是评估是否匹配的最后一条规则,但对该匹配没有任何操作。最典型的情况是 [R] 执行重定向。
如果你想重定向http://www.domain.com/到http://www.domain.com/wordpress/通过重定向,您应该能够简单地执行以下操作:
RewriteEngine on
RewriteRule ^/$ /wordpress/ [R,L]
这将获取后面没有任何内容的 URL(即只有 www.domain.com)并将其重定向到相对路径“/wordpress”。因此,当您点击 www.domain.com/ 时,您将被重定向到 www.domain.com/wordpress/,但如果您点击 www.domain.com/wordpress/?pageid=1,甚至 www.domain.com/some_specific.html,则不会命中重写规则,因为它不符合 ^/$ 规则。
答案3
尝试这个:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/wordpress
RewriteRule ^(.*) http://%{SERVER_NAME}/wordpress/? [L]