1

これが私のシナリオです。アプリケーションの URL は次のように表示されます。

example.com/index.php/article/whatever/here

URL から index.php を削除するために、これを .htaccess に入れ、正常に動作します。

RewriteEngine On   
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ /index.php/$1 [L]

さて、私の問題は、次のような include と admin.php があることです。

example.com/admin.php/manage/whatever/here

また、index.php と競合せずに URL から admin.php を削除する方法がわかりません。これを試してみたところ、500 Internal Server Error が表示されたためです。

RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule ^(.*)$ /admin.php/$1 [L]

編集

404エラーが表示されるため、別の試みはこれで何もありませんでした:

RewriteEngine On   
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^/(.*?)/(.*) /$1/$2 [L]

私のすべての URL には、必要に応じていくつかのパラメーターが必要です。

example.com/this/is/a/large/url/because/is/requiered

編集2:

2 つのルールを作成しましたが、各ルールだけでも問題なく動作します!!! ただし、両方を一緒に使用することはできません:

RewriteRule ^admin/(.*)$ /admin.php/$1 [L]
RewriteRule ^(.*)$ /index.php/$1 [L]
4

2 に答える 2

1

試す:

RewriteEngine On   
RewriteBase / 

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond ${REQUEST_URI} ^admin/(.*)$ [NC]
RewriteRule ^(.*)$ /admin.php/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*)$ /index.php/$1 [L]

次に、少なくとも次の方法でこれをテストします。

http://www.example.com/some/url
http://www.example.com/admin/some/url
于 2012-06-27T16:25:49.253 に答える
0

書き換えルールを少し変更して、パスの最初の部分をキャプチャし、それを置換で使用できます。これを試して:

RewriteRule ^/(.*?)/(.*) /$1/$2 [L]

基本的に()キャプチャ グループを作成するため、最初の 2 つの間にあるもの/は としてキャプチャされ$1、それ以降は としてキャプチャされます。$2

この置換をindex.phpおよびにのみ適用する場合は、書き換え条件を変更することもできます。admin.php

于 2012-06-27T15:56:15.913 に答える