1

URL の書き換えを試みていますが、何らかの理由で期待どおりに動作しません (おそらく、本当に簡単なことを見逃しているのでしょう!)。

www.domain.local と admin.domain.local の 2 つのサイトがあります。以下の .htaccess ファイルを使用すると、公開サイトの書き換えは問題ありませんが、管理サイトは最初の条件によって選択されているため、期待どおりに機能していません (HTTP_HOST をエコーアウトすると、管理者を見ていることが示されますが)。サイト ドメイン)。

Options -MultiViews
Options +FollowSymLinks

RewriteEngine on
RewriteBase /

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

## Public site rewrites   
RewriteCond %{HTTP_HOST} ^www\.domain\.local$ [NC]
RewriteRule ^(home)(/)?$ /index.php [NC]
RewriteRule ^([a-z0-9+-]+)(/)?$ /$1.php [NC,L]

## Admin site
RewriteCond %{HTTP_HOST} ^admin\.domain\.local$ [NC]
RewriteRule ^([a-z0-9+-]+)(/)?$ /manage/$1.php [QSA,L]

私は何を間違っていますか?

どうもありがとう、ケブ

4

1 に答える 1

3

ARewriteCondは次のRewriteRuleディレクティブにのみ適用されるRewriteRuleため、この無条件のルールが最初に適用されるため、この場合、管理者は実行する機会がありません:

RewriteRule ^([a-z0-9+-]+)(/)?$ /$1.php [NC,L]

これを修正するにはいくつかの方法がありますが、最も簡単な方法は、パブリック サイト セクションを変更して 2 番目のルールの条件を含めることです。

## Public site rewrites   
RewriteCond %{HTTP_HOST} ^www\.domain\.local$ [NC]
RewriteRule ^(home)(/)?$ /index.php [NC]
RewriteCond %{HTTP_HOST} ^www\.domain\.local$ [NC]
RewriteRule ^([a-z0-9+-]+)(/)?$ /$1.php [NC,L]
于 2010-10-12T15:43:38.893 に答える