URLを次の形式で書き換えようとしています
localhost/myapp/view/something or
localhost/myapp/crud/something
に
localhost/myapp/view.pl?view=something or
localhost/myapp/crud.pl?action=something
他のすべてのリクエストは、次のようにマッピングする必要があります: localhost/myapp/login から localhost/myapp/login.pl
この .htaccess ファイルで試してみましたが、最後の RewriteRule を有効にすると再帰が発生します。RewriteCond で保護しているため、理由がわかりません。これは私の最初の .htacces mod_rewrite ファイルなので、しばらくお待ちください ;)
RewriteEngine On
RewriteRule ^/?crud/([^/]*)$ /myapp/crud.pl?action=$2 [QSA]
RewriteRule ^/?view/([^/]*)$ /myapp/view.pl?view=$2 [QSA]
RewriteCond $1 !^/(view|crud)$
RewriteRule ^/?([^/]*)$ /myapp/$1.pl [QSA]
アップデート:
先頭の / を削除し、[L] フラグを追加しました。Apache の error.log に次のエラーが表示されます。
[Mon Jul 09 11:55:33 2012] [error] [client 127.0.0.1] File does not exist: /srv/http/myapp/myapp
新しいファイル:
RewriteRule ^crud/([^/]*)$ myapp/crud.pl?action=$2 [L,QSA]
RewriteRule ^view/([^/]*)$ myapp/view.pl?action=$2 [L,QSA]
RewriteCond $1 !^(view|crud)$
RewriteRule ^([^/]*)$ myapp/$1.pl [QSA]