【问题标题】:Wordpress mod_rewrite exception for a subdirectory子目录的 Wordpress mod_rewrite 异常
【发布时间】:2013-04-30 01:18:03
【问题描述】:

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

我的目标是避免只为开发目录重写 wordpress url,并将每个以开发目录开头的 url 重定向到 development/index.php。我已经尝试了许多 mod_rewrite 组合,但我无法让它工作。我得到了除 mysite.com/development/index.php 之外的所有内容的标准 wordpress“页面未找到”页面

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

根目录.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 中使用“开发”作为蛞蝓。

【问题讨论】:

  • 基于对related question 的回答,我已将RewriteBase /development/ 行添加为开发目录.htaccess 文件中的第二行,它运行良好。我也尝试过@doublesharp 的答案,它也有效。我最后使用了他的根目录.htaccess,因为他有一个更简单的解决方案。

标签: wordpress .htaccess mod-rewrite


【解决方案1】:

在主 .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>

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多