3

.htaccessファイルを取得して、すべてのURLをurlパラメーターを使用して単一のページに転送し、ページの取得をそのように処理できるようにしようとしています。私がしたいのはこれです:ユーザーがその中に入力http://mysite.com/users/danすると、ページに転送する必要があると言いますhttp://mysite.com/index.php?url=/users/dan

同様に、ユーザーがURLにアクセスした場合は、次のURLhttp://mysite.com/random-linkに転送する必要があります。http://mysite.com/index.php?url=random-link

これが私の.htaccessファイルで試したコードですが、500エラーをスローし続けます:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond % (REQUEST_FILENAME) !-f
RewriteRule (.*)$ index.php?url=$1 <QSA,L>
</IfModule>

コードをこれに更新 しましたが、それでも500エラーがスローされます<と>を[と]に変更し、RewriteCondの%の後のスペースを削除しましたが、それでもエラーがスローされます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ index.php?url=$1 [QSA,L]
</IfModule>

私は初心者.htaccessなので、サーバーがタイムアウトする原因がわからないので、助けていただければ幸いです。

4

1 に答える 1

5

いくつかの問題

  1. 書き換えフラグは角かっこで囲まれます。例:

    [QSA,L]
    
  2. 構文RewriteConditionが正しくないようです。試す

    RewriteCond %{REQUEST_FILENAME} !-f
    
  3. 安全のために、式を文字列の先頭に固定してください

    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    

最後にRewriteEngine、後続の修飾子にはFileInfo オーバーライドが必要です。<Directory>ドキュメントルートのサーバー構成または仮想ホストセクションに

AllowOverride FileInfo

アップデート

これは、MVCプロジェクトからの典型的な書き換えスキームです。これにより、実際のファイル、ディレクトリ、およびシンボリックリンクが無視されます

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
于 2013-01-25T03:39:57.920 に答える