1

我希望所有的 WordPress 重写都能正常工作,除了:

  • 首页为静态html页面,内容在根文件夹的index.html中
  • /business被路由到business根目录中包含静态 html 页面的文件夹。

当我将索引设置为. /index.html [L]没有任何常规 wordpress 重写工作时。但是,如果我设置DirectoryIndex /index.html我无法弄清楚如何让重写工作/business包含需要在http://mywebsite.com/businessurl 上提供的 HTML 文件。完全重写规则:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L]
RewriteRule . /index.html [L]

感谢您提供任何帮助,而不仅仅是一个答案,对您提供的每一行代码的作用的解释可能会帮助我自己和其他人了解下次如何自行处理。

更新:规则仍然不起作用。/wp-admin 一直在工作。

4

4 回答 4

1

尝试坚持使用默认的 WordPress 重写并简单地添加 DirectoryIndex 以首选 .html 文件而不是 .php 文件:

DirectoryIndex index.html index.php

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

因此,仅当请求的文件或目录丢失时才会发生重写(带有 !-f 和 !-d 标志的 RewriteConds)。如果在一个目录(例如根目录)中有一个静态 index.html 和 index.php,它将首先被提供。

http://httpd.apache.org/docs/2.2/mod/mod_dir.html#directoryindex

于 2012-10-10T09:57:42.750 回答
0

将此代码替换为根目录中的 HTACCESS 文件

# Switch rewrite engine off in case this was installed under HostPay.
RewriteEngine Off

SetEnv DEFAULT_PHP_VERSION 53

DirectoryIndex index.cgi index.php

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

# END WordPress

并且还从数据库中更改 URL...

于 2012-10-09T06:37:57.473 回答
0

尝试:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteRule ^business/ - [L]
RewriteRule ^index\.php$ - [L]
RewriteRule ^$ /index.html [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
于 2012-09-29T00:15:48.927 回答
-1

需要解决两个问题:

  1. 每当有人需要首页时提供特定的 HTML 文件。
  2. 在 WordPress 旁边提供静态目录中的静态文件。

为了解决第一个问题,我将 index.html 重命名为 front-page.php 并将其移动到我当前的主题文件夹中。然后,根据Template Hierarchy ,每当有人请求首页时,WordPress 都会提供它(或者更确切地说:将其用作模板) 。

与实际提供静态文件相比,此解决方案存在成本:每当有人请求您的首页时,仍会加载 WordPress。如果静态提供首页的目标是通过在每次页面加载时不加载 WordPress 或 PHP 来节省服务器资源,那么您应该考虑使用缓存插件。

第二个问题根本不应该是一个问题,因为标准的 WordPress 重写规则已经允许静态文件和目录。线条

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

意味着如果请求的 URL 是实际文件 (-f) 或目录 (-d),则不会发生重定向到 WordPress。因此,您不需要任何额外的重写规则来访问 /business 目录。

标准的 WordPress 重写规则解释如下:

RewriteEngine On                    # Turn on the rewrite engine
RewriteBase /                       # Use the domain root as the base of rewrites
RewriteRule ^index\.php$ - [L]      # If someone requests the WordPress entry point, stop here
RewriteCond %{REQUEST_FILENAME} !-f # If the requested URL is not an actual file ...
RewriteCond %{REQUEST_FILENAME} !-d # ... and if the requested URL is not an actual directory ...
RewriteRule . /index.php [L]        # ... then rewrite it to the main WordPress entry point

当 /index.php 被加载时,这个文件将依次加载 WordPress 和它附带的所有东西。

于 2012-10-05T12:46:44.363 回答