1

example.comにCodeIgniterで構築された既存のサイトがあります。

example.com/wpにWordPressをインストールしています。URLは次のようになります:example.com/wp/my-page

URLをexample.com/my-pageとして表示しながら、example.com /my-pageを書き直してexample.com/wp/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

WordPressルールに[P]フラグを追加しようとしましたが、うまくいきませんでした。また、リライトベースを/wp/に設定しないようにしました。

問題は、自分の問題を理解したり、これが可能かどうかを知るのに十分な詳細を理解していないことです。

要約すると、リダイレクトを実行せずに、書き換えられたURLを書き換えようとしていると思います(したがって、[P]フラグ)。

これはできますか?どんな助けでもいただければ幸いです。

4

1 に答える 1

1

$ cat .htaccess

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

$ツリー-awp

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

$ cat 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

$ cat 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
)

したがって、この時点以降もリダイレクトが表示される場合は、wordpressphpコードによって実行されています

于 2012-07-12T11:18:16.600 に答える