0

私はmod-rewrite自分の.htaccessファイルで以下を使用しています:

RewriteRule ^$ pages/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ pages/$1 [L]

/pages/呼び出されたサブディレクトリがURLに表示されないようにすることを目的としています。

したがって、この: http://mysite.com/pages/home.html

このようになります: http://mysite.com/home.html

それは機能しますが、いくつかの意図しない結果があります。

上記で投稿したコードの直接の結果として、.htaccess404ルーティングがまったく機能しなくなりました。404エラーページをトリガーする必要があるものはすべて、代わりにを生成してい500 Server Errorます。

直し方?


編集:

上記のように、カスタム404ページがで定義されている.htaccessかどうかは関係ありません。それがない場合、またはエラーページへのパスが正しくない場合でも、サーバーはデフォルトの404ページにルーティングし、を指定しないでください500 Server Error

確かに、404エラーの通常のルーティングを中断せずにURLのセクションを抑制する標準的な方法が必要です。 私のオンライン調査から、上記の私の方法は一般的に404ルーティングを壊しているようですが、これまでのところ、適切な解決策は見当たりません。(これはWordpressのインストールではなく、静的なHTMLコンテンツです)


編集2:

URLから1つのディレクトリのみを抑制したいので、、、、、、、など、ポイント/pages/できない兄弟である他のファイルやディレクトリもあるとは言いませんでした。/pages//graphics//includes//css//cgi-bin/robots.txtfavicon.ico

たぶん、これはすべて無益な運動であるか、それが価値があるよりも多くの問題であるか?

どちらの方法でも決定的な答えを探しています。

4

4 に答える 4

3

次の設定では、内の静的ページを検索し、pages/見つかった場合はそれらを表示します。これは404を壊してはいけません。それをあなたのウェブのルートフォルダに入れてください.htaccess

RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/pages/%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/%{REQUEST_URI} -d
RewriteRule ^(.*)$ /pages/$1
于 2012-11-18T14:12:37.650 に答える
0

最も近い実用的なソリューションを入手してくれた@KamilŠrotに感謝します。-dただし、要求元のURIがディレクトリであるかどうかを確認するために、別のテスト()を追加する必要がありました。

これはうまく機能しており、404 errorページは再び正しくルーティングされています。

RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/pages/%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/%{REQUEST_URI} -d
RewriteRule ^(.*)$ /pages/$1
于 2012-11-18T18:03:18.760 に答える
0

これはあなたがやろうとしていることを達成するはずです。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/([a-zA-Z0-9\_\-]+)\.html$
RewriteRule (.*) /pages/$1 [L]
于 2012-11-18T00:18:17.870 に答える
-1

htaccess404ページを処理するために、ファイルにエラーページの方向を追加するのはどうですか。

ErrorDocument 404 /path/to/your/404.html
于 2012-11-17T16:56:27.063 に答える