2016-07-12 13 views
0

私は自分の.htaccessの仕事を夢中にしていて、成功しなかったいくつかの例に従っています。一般的なかなりのURLのためのApache htaccess

私の問題は、私はランダムなPHPファイル(PHP拡張をomiting)にリダイレクトするように、一般的なhtaccessファイルを必要とするということです、例えば:

  • /XXXXX /負荷が/
  • /YYYYYを/xxxxx.php ZZの負荷がこれは私がいない成功を収めてしようとしていますものです

/yyyyy.php?param=zz:

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^MYDOMAIN [NC] 
RewriteRule ^(.*)$ http://MYDOMAIN/$1 [L,R=301,NC] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*?)/?$    /$1.php    [NC,L] 
RewriteRule ^(.*?)/?(.+)$   /$1.php?param=$2 [NC,L] 

</IfModule> 

問題は、どのリクエストでも500サーバーエラーが発生していることです。私は、その後、最後のルールをコメントする場合 は:

  • /xxxxは正しく動作
  • /XXXX /が正しく動作
  • /XXXX/yyyyは(それが望んでいた パラメータを書き換えていない)が正しく動作しません。

ここで何が起こっているのかわからないので、助けてください。

P.S.私はまた、同様に冒頭で「停止」ルールを入れてテストした:

RewriteRule ^.*\.php.*$ - [L] 

そして私はちょうどパラメータの場合は404を持つ、500サーバーエラーなしで両方のルールを持つことができます。

答えて

1

最後のルールが条件なしで実行されており、無限ループが発生しているため、500を取得しています。

あなたのサイトのルートの.htaccessにこれらのルールを使用することができます。

RewriteEngine On 

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

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

@StormByte:あなたのためにこの仕事をしましたか? – anubhava

関連する問題