1

URL が「http://www.example.com/start」のようになり、「http://www.example.com/index.php/start」のようになりません。私の .htaccess の次のコードで問題なく動作します。

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

あるページでは、GET-Parameters を使用する必要があります。URL は次のようになります: "http://www.example.com/artists/picasso" で、"http://www.example.com /index.php/artists?artist=picasso" 次のコードでも可能です:

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

さて、このソリューションの問題は、他のすべての URL がスラッシュで終わらなければならないことです。したがって、「http://www.example.com/start/」のようにする必要があり、「http://www.example.com/start」のようにする必要は
ありません。

ご協力いただきありがとうございます !

4

1 に答える 1

1

ルールを次のように変更してみてください。

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

主に、/$パターンの最後にがあります。RewriteRule ^(.*)/$ /index.php?/$1つまり、パターンに一致させるには、スラッシュで終了する必要があります。に変更すると(.*?)/?$、オプションになります。

于 2012-12-03T11:50:36.000 に答える