mod-rewrite:这个简单的重写有什么问题redirect到一个子目录?

目录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]