根目录http:// www .mydomain .com(SF不会让我发布超链接 – 代表太低)有一个catchall index.php页面和一个.htaccess文件。 在这个根directoy我有一个WordPress的/目录,其中包含(惊喜)一个WordPress的安装。
我的目标是,当用户inputhttp:// www .mydomain .com时,他们会转到http:// www .mydomain .com / wordpress
这是我的重写规则:
RewriteEngine on RewriteCond %{REQUEST_URI} !^/wordpress RewriteRule ^/(.*)$ http://%{SERVER_NAME}/wordpress/$1 [L]
目前看起来什么都不做 – 它仍然在根目录下加载index.php。
我的重写规则是什么(我假设我使用的是错误的)?
在自己的目录中使用WordPress的正确方法是复制WordPress目录中的index.php文件,并将该行更改为:
require('./wp-blog-header.php');
对此:
require('./your_wordpress_directory/wp-blog-header.php');
当你这样做,回到你的pipe理员选项,并保存您的永久链接,WordPress将自动重写您的.htaccess根据您select的网站url和WordPressurl选项。
这些也可以在wp-config.php中定义
如果WordPress位于http://example.com/wordpress,但希望用户通过inputexample.com来访问您的网站,请使用此方法。
define('WP_HOME', 'http://example.com') ;
define('WP_SITEURL', 'http://example.com/wordpress');
具体而言,什么是错误的是,你没有告诉它如何处理这场比赛。 [L]本身告诉它是最后一个评估它是否匹配的规则,但是没有对该匹配采取任何行动。 最典型的情况是[R]执行redirect。
如果您希望通过redirect将http://www.domain.com/redirect到http://www.domain.com/wordpress/ ,您应该可以简单地通过以下方式执行此操作:
RewriteEngine on RewriteRule ^/$ /wordpress/ [R,L]
这将采取一个没有任何关系的URL(即www.domain.com),并将其redirect到相对path“/ wordpress”。 因此,当您点击www.domain.com/时,您将被redirect到www.domain.com/wordpress/,但是如果您点击www.domain.com/wordpress/?pageid=1,甚至www.domain.com/ some_specific.html rewriterule不会被命中,因为它不符合^ / $规则。
尝试这个:
RewriteEngine on RewriteCond %{REQUEST_URI} !^/wordpress RewriteRule ^(.*) http://%{SERVER_NAME}/wordpress/? [L]