0

mod の書き換えは localhost で機能していますが、godaddy 共有ホストでは機能していません。

Options -Multiviews
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/WebShop/View/public%{REQUEST_URI} -f
RewriteRule ^(.*)$ WebShop/View/public/$1 [L]

RewriteRule ^(.*)$ entryPoint.php [QSA,L]

問題は RewriteCond 部分にあります。サブフォルダーに既存のファイルが見つかりません。絶対パス、相対パス、リライトベースのすべてを試しましたが、どちらも機能しませんでした。Godaddy は rewritelog へのアクセスを許可しません... この問題を解決する方法はありますか?

編集:

htaccess はサブフォルダーにあり、ドキュメント ルートには、要求をドメインごとにサブフォルダーに分割する htaccess があります。

Options -Multiviews
Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ %1/$1 [L,QSA]

そして本当の問題は、サブフォルダーの htaccess の %{REQUEST_URI} にもサブフォルダーの名前が含まれていることです:S

編集2:

わかりました私は部分的な解決策を持っています:

Options -Multiviews
Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%1/WebShop/View/public/%2 -f
RewriteRule ^(.*)$ entryPoint.php?file=%2 [L]

RewriteRule ^(.*)$ entryPoint.php [QSA,L]

存在する場合、これはファイル名を出力しますが、それは一種の冗談です.2番目のルールを次のように変更すると

RewriteRule ^(.*)$ x.php [QSA,L]

次に、すべてが x.php に移動します。mod rewrite が L フラグを認識しないのはなぜですか?

(ビールを飲みに行く)

4

1 に答える 1

0

何らかの奇妙なディレクトリ設定が原​​因である可能性がありますが、godaddy サーバーのサブディレクトリにリダイレクトする場合は、そこに RewriteEngine をオンにして空の .htaccess ファイルを作成する必要があります。そうしないと機能しません。

edit2 セクションの上記のコードはうまく機能しますが、godaddy サーバーでは機能しません...これは、そのファイル アクセス バージョンです。

Options -Multiviews
Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%1/WebShop/View/public/%2 -f
RewriteRule ^(.*)$ WebShop/View/public/%2 [L]

RewriteRule ^(.*)$ entryPoint.php [QSA,L]

そして、「WebShop/View/public」ディレクトリに RewriteEngine をオンにして空の .htaccess ファイルを配置し、L フラグの問題を修正しました。

于 2012-04-14T19:46:26.723 に答える