4

これは私の .htaccess ファイルです:

# NO LISTING OF INDEXES
Options -Indexes

<IfModule mod_rewrite.c>
  RewriteEngine On

  # NIX THE www BECAUSE IT IS NO LONGER 1996 AND YOU'RE COOLER THAN THAT
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)/$ http://%1/$1 [R=301,L]

  # NIX TRAILING SLASHES BECAUSE SEO IS A VENGEFUL GOD AND WHATNOT
  RewriteRule ^(.*)/$ $1 [R=301,L]

  # SEND ALL NON-FILE REQUESTS TO index.php FOR FIGURING OUT
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>

# ERROR DOCS
ErrorDocument 400 /error/400
ErrorDocument 401 /error/401
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
ErrorDocument 500 /error/500

/images/フォルダー (またはサイト構造内の他の実際のフォルダー) にアクセスしようとすると/images、リダイレクト ループに陥ります。

末尾のスラッシュ ルールの前に追加を試みRewriteCond %{REQUEST_FILENAME} !-dたところ、適切なフォルダーに末尾のスラッシュが強制される限り、リダイレクトが「修正」されましたが、CMS の焼き付けられた URI クエリであるかのように、フォルダー名がスクリプトに渡されました。把握するため。

URIが誰かが違法にリストしようとしているフォルダーであるかどうかを確認することで、CMS側でこれを修正しようとすることができると思いますが、理想的には、.htaccessフォルダーリストの呼び出しを禁止されたページの1つにリダイレクトする適切な解決策があると思います。そこで宣言すると便利です。誰か知っていますか?

4

2 に答える 2

1

次の行をコメント アウト/削除します。

RewriteRule ^(.*)/$ $1 [R=301,L]

Options -Indexes誰かがディレクトリの内容を一覧表示しようとしたときに禁止エラーを表示するために既に上部にあるので、実際には必要ありません。それ以外に、次のようにコードを少し調整します。

# NO LISTING OF INDEXES
Options +FollowSymLinks -MultiViews -Indexes

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /

  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)/$ http://%1/$1 [R=301,L]

  # SEND ALL NON-FILE REQUESTS TO index.php FOR FIGURING OUT
  RewriteRule ^index\.php$ - [L,NC]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [L]
</IfModule>

# ERROR DOCS
ErrorDocument 400 /error/400
ErrorDocument 401 /error/401
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
ErrorDocument 500 /error/500
于 2012-09-05T17:10:52.650 に答える
1

それが違いを生むかどうかはわかりませんが、通常、条件付きルールの前にこれから始めます

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

書き換えベースは後で開始します。多分それを上に移動します。

于 2012-09-05T17:02:52.033 に答える