2

現在、きれいな URL の書き換えルールが 1 つありますが、これは正常に機能しています。すぐに追加しようとしましたが、問題が発生しています:

# redirect /?p=xyz to /xyz
RewriteCond     %{QUERY_STRING}         ^p=(.*)$
RewriteRule    ^(.*)$                   /index.php/%1 [L]

# Removes index.php from ExpressionEngine URLs
RewriteCond                     $1 !\.(gif|jpe?g|png)$  [NC]
RewriteCond                     %{REQUEST_FILENAME} !-f
RewriteCond                     %{REQUEST_FILENAME} !-d
RewriteRule                     ^(.*)$ /index.php/$1 [L]

2 つ目は正常に動作していますが、最初のものは内部サーバー エラーが発生しています。基本的に、私は ?p=* の何かを /index.php/* に移動したい

[編集] 明確にするために、 http://domain.com/?p=test が http://domain.com/test/ と同等である必要あります

4

1 に答える 1

2

domain.com/testdomain.com/?p=test

代わりにこれを試してください:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !p=   [NC]
RewriteRule  ^([^/]+)/?   /?p=$1 [L,NC]

オプション:

逆の場合
domain.com/?p=testdomain.com/test/index.php

これを試して:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} p=([^/]+)  [NC]
RewriteRule  .*   /%1/index.php?   [L,NC]

index.php不要な場合は、次のように削除します。

RewriteRule  .*   /%1/?    [L,NC]
于 2013-04-03T22:20:15.740 に答える