2011-01-29 10 views
3

簡単なPHPサイトでは、わかりやすいURLを使いたいと思います。htaccessとmod_rewriteが原因でapacheが不足しているファイルで失敗する

を指す

http://mysite.com/page/123

http://mysite.com/page.php?id=123

そして、この作品だから私はのように見えるために私のURLをしたいと思います!しかし、サーバー上にないファイルを指していると、Apacheが急増し、Apacheを強制終了する必要があります(MAMPを使用してローカルで開発を進める必要があります)。

私の.htaccessファイルです。何か案は?

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^([^/=]+)/?([^/]*)/?$ $1.php?id=$2 [N,QSA] 

ErrorDocument 404 /404.php 
+0

それが存在しないファイルを必要とするとき、Apacheはそれが好きではありません。私の仮想ホストに存在しないエラーログファイルを指定すると起動しません。 – Endophage

+0

それは私も気難しくさせるが、欠けているファイルは人生の一部である。 Apacheが正しく動作する方法はありますか? 404ルールが蹴られないのはなぜですか? – Corey

答えて

1

ちょうどあなたの2つのルールの順序を逆にし、代わりにNLフラグを使用します。

RewriteCond $1 !.*\.php$ 
RewriteRule ^([^/=]+)/?([^/]*)/?$ $1.php?id=$2 [L,QSA] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
+0

ありがとうございますが、リダイレクトループが発生すると思いますか? [Sat Jan 29 02:53:48 2011] [エラー] [クライアント127.0.0.1] mod_rewrite:内部リダイレクトの最大数に達しました。構成エラーが発生すると想定します。必要に応じて制限を増やすには、 'RewriteOptions MaxRedirects'を使用します。 – Corey

+0

@Corey:修正しました。 – Gumbo

+0

完璧な、それは私が必要としたものです! – Corey

関連する問題