2

次のような URL を使用できるように、疑問符と等号を置き換えようとしています。

http://www.mydomain.com/categories/id/23/name/category-name

上記の URL は内部的に http://www.mydomain.com/categories?id=23&name=category-nameにリダイレクトされます。

私はこの.htaccessを使用しています:

Options +FollowSymLinks -MultiViews
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

# external redirect from /view.php?id=1 to /view/id/1
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^.]+)\.php\?([^=]+)=([^\s&]+) [NC]
RewriteRule ^ /%1/%2/%3? [L,R=301]

# internal forward from /view/id/1 to /view.php?id=1
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?$2=$3 [L,QSA]

しかし、期待どおりに機能していません。http://www.mydomain.com/categories/id/23/name/category-nameにアクセスすると、500 内部サーバー エラーが発生します。なんで?私は何を間違っていますか?

更新されたコード

Options +FollowSymLinks -MultiViews
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?(.*)$ $1/$2=$3&$4 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/([^/]+)$ $1.php?$2 [L,QSA] 
4

1 に答える 1