0

こんにちは私は私が構築した個人的なサイトにseoフレンドリーなURLのためのmod_rewriteスクリプトを持っています。このスクリプトは、サーバー上の実際のディレクトリである管理フォルダーにアクセスできないことに気付くまで、非常にうまく機能していました。最初の変更を行う前の.htacsessは次のようになります。


Options +SymLinksIfOwnerMatch
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^(.*)$ index.php?page=$1
RewriteRule ^(.*)/(.*)$ index.php?page=$1 

そこで、スクリプトを変更して、次の2つのルールの2番目のセットを追加しました。

RewriteCond%{REQUEST_FILENAME}!-d RewriteCond%{REQUEST_FILENAME}!-f

最後のルールの直前なので、最初の4行のコードがないと次のようになります。

RewriteRule \.(css|jpe?g|gif|png|js)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?page=$1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)/(.*)$ index.php?page=$1 

これを実行すると、adminディレクトリにアクセスできましたが、コンテンツは第2レベルのリンクに表示されないため、最後のルールが無視されているように見えます。

誰かが私が間違っていることを理解するのを手伝ってくれるでしょうか。

ライアン・バウアー

4

1 に答える 1

1

2 番目のルールは必要ありません。2 番目は の一部ではない RewriteRule ^(.*)/(.*)$ index.php?page=$1/$2ため、本当に機能させたい場合は、 にする必要があります。(.*)$1

于 2012-07-31T23:26:27.003 に答える