私はサブディレクトリがあるので、これを動作させるのに苦労していますexample.com/projects
test
と誰かがexample.com/test
と入力した場合、example.com/projects/test
のファイルが表示されますが、ファイルが存在しない場合は404エラーが表示されます。ファイルが存在しない場合、サブディレクトリにhtaccessポイント要求があり、サブディレクトリの下にあります
さらに可能であれば私はいつでもexample.com/projects/test
をしたいと思いますが、それは代わりにexample.com/test
にリダイレクトします型付けされた誰かがちょうどprojects/
に行く場合、私は彼らがそこに滞在することができるようにしたいました。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ projects/$1 [PT]
500内部サーバーエラーをスローする存在しない場合を除き、ほぼ完璧にファイルを通過した作品
これまでに、次の.htaccessファイルを試してみました
プロジェクトの下にファイルが存在していても、全く機能しない場合にのみ、このようなことが起こるかもしれないと思いました。
RewriteCond projects/%{REQUEST_FILENAME} -f
RewriteCond projects/%{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ projects/$1 [PT]
Iのみリダイレクトループを見つけるために、(上記のコードの前に置か)
RedirectMatch ^/projects/(.+)$ /$1
をこの試み/projects
を剥離する/projects/test
に行く何を指して第二の部分について。どうすればこれを防ぐことができますか?
参照のための私の現在の.htaccessファイル:
をErrorDocument 404 /404.html
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example2\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example2\.com$
RewriteRule ^/?$ "http\:\/\/example3\.org" [R=301,L]
#RedirectMatch ^/projects/(.+)$ /$1
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^(.*)$ projects/$1 [PT]
これは私のために動作していないようです。すべてがルートディレクトリ(.htaccess)で実行されると、すべてがホームディレクトリにリダイレクトされ、もう何も動作しません。最初の部分をコメントアウトすると、(キャッシュされているかもしれない)いくつかのファイルのリダイレクトが機能しているように見えますが、そこにあるべきものに対しては404エラーが出ます。私は302の代わりに302のリダイレクトを使用しましたが、後で元に戻す能力以外の何かに影響を与えるべきではありません。 – zfb
2つのURLを試してみましたが、2つのURLは別の書き換えルールで試してみましたが、試したURL(/ projectsの下のディレクトリです)で404エラーが発生しました。ちょうど404ページを渡しました。 'RewriteCond%{THE_REQUEST}/projects /(\ S *)\ sH [NC]'ビットを使って、ホームページを表示するだけでexample.comにリダイレクトされたeven/asdfasを指摘しました。私は元の質問に.htaccessを追加しました。今のように – zfb
ああ、何が起こったのか分かります。はい、それはちょっと動作しますが、私がむしろやっていないファイルを宣言する必要があります。だから私は 'example.com/projects/test/index.html'を持っています。もし私がちょうどそのようにタイプすれば、私は' example.com/projects/test/'とタイプすれば404です。それは他の方法で行うことができますか? – zfb