1

我在 example.com 上有一个使用 CodeIgniter 构建的现有网站。

我在 example.com/wp 上安装了 WordPress。网址如下所示:example.com/wp/my-page

我试图弄清楚如何重写 example.com/my-page 以显示 example.com/wp/my-page 的内容,同时仍将 URL 显示为 example.com/my-page。

CodeIgniter 控制 index.php 文件,所以我不能在根目录下使用 WordPress 的 index.php。

我已经完成了一半,我让它处理一个纯 HTML 文件,但是让 WordPress 参与会将 url 重写到 /wp 子目录。

这是我在 example.com 根目录中使用的内容:

<IfModule mod_rewrite.c>
RewriteEngine On
Options FollowSymLinks

RewriteBase /

RewriteRule ^my-page /wp/my-page [P]

</IfModule>

当我访问 example.com/my-page 时,我最终到达了 example/wp。

我想它与 /wp/ 目录中的标准 WordPress .htaccess 有关,如下所示:

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

我尝试将 [P] 标志添加到 WordPress 规则中,但没有成功,我也尝试不将重写基础设置为 /wp/。

问题是我对这些东西的理解不够详细,无法弄清楚我的问题,或者不知道这是否可能。

总之,我想我正在尝试重写一个重写的 URL,而不进行重定向(因此有 [P] 标志)。

这可以做到吗?任何帮助,将不胜感激。

4

1 回答 1

1

$猫.htaccess

RewriteEngine on
RewriteBase /
RewriteRule ^my-page wp/my-page [L]

$树-a wp

wp
|-- .htaccess
`-- index.php

$ 猫 wp/.htaccess

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

$ 猫 wp/index.php

<pre><?php print_r($_SERVER); ?></pre>

结果:

浏览器中可见的 URL:http://example.com/my-page 输出:

Array
(
[REDIRECT_REDIRECT_STATUS] => 200
[REDIRECT_STATUS] => 200
[HTTP_HOST] => example.com
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_CONNECTION] => keep-alive
[PATH] => /usr/local/bin:/usr/bin:/bin
[SERVER_SIGNATURE] => Apache/2.2.16 (Debian) Server at example.com Port 80
[SERVER_SOFTWARE] => Apache/2.2.16 (Debian)
[SERVER_NAME] => example.com
[SERVER_ADDR] => 1.2.3.4
[SERVER_PORT] => 80
[REMOTE_ADDR] => 4.3.2.1
[DOCUMENT_ROOT] => /www/vhosts/example.com/
[SERVER_ADMIN] => webmaster@example.com
[SCRIPT_FILENAME] => /www/vhosts/example.com/wp/index.php
[REMOTE_PORT] => 57775
[REDIRECT_URL] => /wp/my-page
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => 
[REQUEST_URI] => /my-page
[SCRIPT_NAME] => /wp/index.php
[PHP_SELF] => /wp/index.php
[REQUEST_TIME] => 1342091732
)

因此,如果在此之后您仍然看到重定向,那是由 wordpress php 代码完成的

于 2012-07-12T11:18:16.600 回答