0

フォルダー/ファイル構造は次のとおりです。

rootFolder/
  lowRes/lowres.php
  hiRes/hires.php
  sys.php

基本的には、ユーザーが site.com/img_0001_hq.html, .htaccess というページを呼び出して sys.php?1=img_0001_hq に書き換える、といったような書き換えを行いたいです。また、受け入れ可能な emdings を ".html" と "/" に制限したいと思います。そのような末尾が存在しない場合は、sys.php?1=p_404 を呼び出したいと考えています。書き換えは期待どおりに行われますが、エラーになると...

ページ site.com/hiRes/hires.php または site.com/lowRes/lowres.php を呼び出すと、書き換えが機能せず、スクリプト (hires.php および lowres.php) が実行され、エラーが報告されます。通常は変数が不足しています。トリガーされていないsys.phpから。また、ページ site.com/hiRes または site.com/lowRes を呼び出すと、sys.php が実行されますが、間違っています。また、これらのアドレスを呼び出すと、ブラウザのアドレスが site.com/hiRes/?1=p_404 または site.com/lowRes/?1=p_404 に変わります。一体何が起こっているのですか?:D

ええ、私の .htaccess は次のようになります。

IndexIgnore *
RewriteEngine on
RewriteRule ^(.*)(/|.html)$ sys.php?1=$1 [L]
RewriteRule ^(.*)$ sys.php?1=p_404 [L]

私はこれに夢中になっています... :)

4

1 に答える 1

0

sys.php (およびその他の書き換えたくないもの) を除外する条件をいくつか追加してみてください。おそらく、最初の書き換えの後、URI がsys.php書き換えエンジンに戻されます (mod_rewrite は、URI の変更が停止するか、内部リダイレクトの最大数に達するまでこれを行い、500 サーバー エラーを引き起こします)。

IndexIgnore *
RewriteEngine on

RewriteCond %{REQUEST_URI} !sys\.php
RewriteRule ^(.*)(/|.html)$ sys.php?1=$1 [L]

RewriteCond %{REQUEST_URI} !sys\.php
RewriteRule ^(.*)$ sys.php?1=p_404 [L]
于 2013-04-18T03:27:02.880 に答える