0

私は MAMP で自分のサイトを構築しています。数日後、最終的に .htaccess ファイルを自分の意志で動作させることができました。しかし、ライブ環境にアップロードすると、同じように動作しません! 異なるバージョンはありますか?MAMP が自動的に処理するファイルのエラーが原因ですか?

これらの特殊ファイルでない場合は、デフォルトの RewriteRule を使用します。scripts/images/mediacontent/services/robot.txt は機能しますが、機能しません (login.php、hybridauth、ブログ)

#start
Options +FollowSymlinks
RewriteEngine On
RewriteBase /

# main site
RewriteCond %{REQUEST_URI} !^/scripts/(.*\.js)$
RewriteCond %{REQUEST_URI} !^/styles/(.*\.css)$
RewriteCond %{REQUEST_URI} !^/images/(.*\.jpg|.*\.png|.*\.gif)$
RewriteCond %{REQUEST_URI} !^/mediacontent/(.*\.jpg|.*\.png)$ [NC]
RewriteCond %{REQUEST_URI} !^/services/(.*\.php)$
RewriteCond %{REQUEST_URI} !^/login\.php$
RewriteCond %{REQUEST_URI} !^/hybridauth/$ 
RewriteCond %{REQUEST_URI} !^/blog/$ [NC]
RewriteCond %{REQUEST_URI} !^/robot.txt$ 

RewriteRule (\w+) index.php?page=$1 [NC,L]
4

2 に答える 2

0

すべての .htaccess ファイルを削除した後、問題は書き換えに含まれていないことに気付きました。

サーバー上のすべてのファイルを削除して再度アップロードしたところ、機能するようになりました。

自己メモ: 適切な FTP アプリケーションを使用してください。

于 2013-04-22T18:04:02.940 に答える
0

では\w+、リクエスト全体をキャプチャするのではなく、その一部のみをキャプチャします。

エスケープシーケンスから

\w
任意の「単語」文字

「単語」文字は、任意の文字、数字、またはアンダースコア文字です

つまり、ドット.、スラッシュ/、ハイフン-、またはアンダースコア以外のその他の特殊文字_は含まれません。

条件から、既存のすべてのファイルとディレクトリをルールから除外したいと考えています。あなたは同じことを達成することができます

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php?page=$0 [L]

このルールは、特殊文字を含む完全なパスを取得し、これを に渡しindex.phpます。ただし、Javascript ソース、CSS ファイル、画像などの実際のファイルもすべて除外されます。

于 2013-04-22T16:24:49.410 に答える