0

.htaccess に次の書き換えルールがあります。最初の 4 行は、index.php なしでサイトへのアクセスを許可することを処理することになっており、使用しようとしている最後のビットを追加するまでは正常に動作します。サイトの URL から末尾のスラッシュを削除します。

RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5})$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(uploads|cache|themes|default|admin\.php|favicon\.ico|robots\.txt|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1

# Remove trailing slashes
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

最後の行を追加してサイトのルートにアクセスすると、index.php の部分が URL に追加されます。これはなぜですか?

4

2 に答える 2

2

最後の行を追加してサイトのルートにアクセスすると、index.php の部分が URL に追加されます。これはなぜですか?

これは、ルールが順次適用されるためです。にルーティングする前に、リダイレクトが発生するようにします/index.php。これらのルールを入れ替えるだけです:

# Remove trailing slashes
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5})$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(uploads|cache|themes|default|admin\.php|favicon\.ico|robots\.txt|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1  [L]
于 2012-10-18T20:08:23.137 に答える