特定のパターン以外のすべての質問に対して、この書き換えルールを尋ねました。
さて、問題はまだ同じです。私は次のhtaccessを持っています:
<IfModule mod_rewrite.c>
# Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} "forum/" [OR]
RewriteCond %{REQUEST_URI} "forum"
RewriteRule (.*) $1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/forum
RewriteRule (?!^forum(?:/.*|)$)^(.*)$ /index.php/$1 [L,NC,QSA]
</IfModule>
そして、このディレクトリ構造:
public_html
|--- /forum
|--- /assets
|--- /application
|--- /system
|--- index.php
|--- .htaccess
forum
サブディレクトリには Simple Machine Forum がインストールされており、ルート ディレクトリには CodeIgniter がインストールされています。
基本的に、誰かが にアクセスするhttp://getnocms.com/something
と、 に書き換えられhttp://getnocms.com/index.php/something
ます。
しかし、誰かが にアクセスする場合http://getnocms.com/forum
、書き換えルールを適用したくありません。
まあ、それは実際に動作します。しかし、アクセスしようとすると奇妙な現象が発生します。
http://www.getnocms.com/forum/index.php?action=admin;area=manageboards;sa=newcat;feb4219=bea74b1ac6aace220b204cb50a5d5027
この方法では、CodeIgniter が引き継いで 404 not found ページを表示するようです。ただし、アドレスバーを次のように編集すると、
http://www.getnocms.com/forum/index.php?action=admin&area=manageboards&sa=newcat&feb4219=bea74b1ac6aace220b204cb50a5d5027
正しく実行されます (smf がリクエストを処理します)。
rewriteCond はセミコロンでは機能しないという突然の結論に達しました。そうですか?