1

私のウェブパスは:( http://git.example.com/例えば)

私のドキュメントルートは次のとおりです。

/home/user/git/

ドキュメントルート内に2つのフォルダがあります。

/home/user/git/john
/home/user/git/doe

これらのフォルダーは、それぞれjohnとdoeのgitリポジトリを表します。これらはWebサーバーでホストされるため、マスターにコミットする前に、コードが作成されたとおりにテストできます。

私が抱えている問題は、リポジトリのサイトコードにワードプレススタイルの.htaccessファイルがあり、スクリプトが各製品などのデータベースで指定されているすべてのページスラッグを処理できることです。.htaccessに次のコードがありますディレクトリ内のファイル/home/user/git/john

RewriteEngine On
RewriteBase /john/

# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR]
RewriteRule ^.*$ - [L]

# ROUTE THROUGH CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

また、rewritebaseをjustに変更し/てみました。また、最後の行とRewriteRule . /john/index.phpその中のすべてのバリエーションをに変更してみました。私は何もしません。

動作しないとはどういう意味ですか?私はURLを持っていると言ってhttp://git.example.com/john/some_product_name.htmlください-404notfoundエラーが発生し、apacheエラーログにはリクエスト用のそのようなファイルがない標準の404が含まれています。これ以上何もない。「ファイルがないのはたわごとではありません...ファイルが見つからないときにこれを書き直しているはずです!」のようなものです。

とにかく、この正確なスクリプトは、ライブサイトのように、すべてがルートディレクトリの外で動作しているときに問題なく機能しますが、コピーをサブディレクトリに移動することは問題でした。プロジェクトの開発者ごとに新しいサブドメインを作成し、doc_rootからgitを実行することもできますが、実際には...これを機能させる方法があるはずです。私は何が欠けていますか?

index.phpまた、ファイルの先頭にリライトがまったく発生していないことを確認できますecho "I'm here"; exit;。404が見つからない代わりに、「I'mhere」というメッセージが表示された空白の白いページが表示されるはずです。私はしません。

** アップデート **

私はこのように上部の線を通して力をコメントアウトしました、そしてそれは今働いています:

RewriteEngine On
RewriteBase /john/

# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
#RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
#RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR]
#RewriteRule ^.*$ - [L]

# ROUTE THROUGH CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

なぜ世界でそれらの線がこの問題を引き起こしているのでしょうか?私がアクセスしているURLは、これらのパターンのいずれにも完全に一致していません。

4

1 に答える 1

2

次のように、最初のルールの最後の [OR] を削除します。

# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
# Don't use OR in next line.
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ 
RewriteRule ^.*$ - [L]
于 2013-03-03T06:00:04.170 に答える