0

私のウェブサイトの構造は次のとおりです

  • Webサイト
    • 株式会社/
      • サブディレクトリ/
      • header.php
      • content.php
      • footer.php
    • index.php
    • .htaccess

今私の中で.htaccess、私はURL Re-writingそのような方法でやったhttp://my_website/page/s/o。ここでサブディレクトリに移動したいのですが、最初のパラメータをとして取得しておりpage、サブディレクトリには入力されていません。ルートにサブディレクトリを配置できません(テンプレート構造の再定義を回避するため)

以下は私の.htaccessファイルです

  AddDefaultCharset utf-8
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

DirectoryIndex index.php

RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)/([^/]+)?$ index\.php?page=$1&s=$2&o=$3 [L]

RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)?$ index\.php?page=$1&s=$2 [L]

RewriteRule ^([a-zA-Z0-9_-]{3,20})/?$ index\.php?page=$1 [L]

RewriteRule ^([a-zA-Z0-9_-]{3,20})?$ index\.php?page=$1 [L]

ErrorDocument 404 /404
4

1 に答える 1

1

index.phpをターゲットとするものから「実際の」サブディレクトリ要求を区別する方法を理解する必要があります。実際のサブディレクトリのセットは限られており、それらは/page/s/oスキームと競合しないと思います。たとえば、www.mysite.com/users/x/yが有効なリクエストである場合、実際のサブディレクトリを持つことはできません/users

実際のサブディレクトリを対象としたリクエストを除外するには、実際のサブディレクトリを「キャッチ」するRewriteRuleステートメントを作成します。

RewriteRule ^/realsubdir - [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)/([^/]+)?$ index\.php?page=$1&s=$2&o=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)?$ index\.php?page=$1&s=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/?$ index\.php?page=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})?$ index\.php?page=$1 [L]

置換部分のダッシュ(-)は、パスを変更しない、つまり置換が行われないことを意味します。

于 2013-02-13T13:45:36.287 に答える