2013-04-29 54 views
1

我使用的是GoDaddy Delux Hosting,Linux服务器。我在根目录下安装了wordpress。我已经在根目录下启动了一个开发目录。我没有在开发目录下的wordpress安装,但我自己的项目。Wordpress mod_rewrite例外的子目录

我的目标是绕开开发目录的wordpress url重写,并将每个以开发目录开头的url重定向到development/index.php。我已经尝试了很多mod_rewrite组合,但是我无法完成它的工作。我得到标准的WordPress“找不到网页”页面的一切,除了mysite.com/development/index.php

最后一个配置,我想出如下:

根目录.htaccess文件:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/(development|development/.*)$ 
RewriteRule . /index.php [L] 
</IfModule> 

开发目录的.htaccess文件:

RewriteEngine On 
RewriteRule .* index.php [L] 

任何想法如何最好的办法呢?

PS:我没有在Wordpress中使用“开发”作为一个slu。。

+0

基于一个答案,一个[相关问题]( http://stackoverflow.com/questions/2550391/multiple-mod-rewrites-on-one-site-possible-wordpress-blog-in-root-directory),我哈哈在开发目录.htaccess文件中添加了'RewriteBase/development /'这一行作为第二行,它工作正常。我也试过@ doublesharp的答案,这也起作用。最后我使用了他的根目录.htaccess,因为他有一个更简单的解决方案。 – Burak 2013-04-29 19:44:47

回答

4

在主.htaccess文件,你应该忽略在“发展”的东西 - 你不需要因为RewriteBase /初始正斜杠,并可以使尾部斜杠可选带?,并且没有必要.*$

在该子目录中,您将忽略任何不在重写的子目录中使用RewriteBase /development/将所有内容发送到/development/index.php,其中请求不是文件或目录。

给下面的一个尝试:

/.htaccess

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^development/? 
RewriteRule . /index.php [L] 
</IfModule> 

/development/.htaccess

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /development/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /development/index.php [L] 
</IfModule>