1

ここの .htaccess QA で探しているものを見つけることができなかったので、これが重複している場合はご容赦ください。静的 HTML サイトで次の問題があります。構造は以下。

私の相対パスは でinfo.htmlあり、while usescontact.htmlを使用する必要があります。手伝ってくれてありがとう。 /home/css/style.cssindex.html/css/style.css

Root
- .htaccess
↳ Drupal
  - .git
↳ Dev
  - .git
↳ Home
  - .htaccess
  - .git
  - css
  - js
  - img
  - info.html
  - contact.html
  - index.html

ゴール

  • Dev.example.comからすべてのファイルを使用するには/Dev
  • example.comからすべてのファイルを使用するにはexample.com/home
  • example.com/infoからリダイレクトしexample.com/home/info.htmlます。
  • example.com/contactからリダイレクトしexample.com/home/contact.htmlます。

これまでに試したこと

ルート内 .htaccess

      # Set a default home directory, (this subfolder always loads)
  # RewriteEngine On
  # RewriteCond %{THE_REQUEST} ^GET\ /home/
  # # RewriteCond %{HTTP_HOST} ^(www\.)?example.com$
  # RewriteRule ^home/(.*) /$1 [L,R=301]

  # RewriteCond %{HTTP_HOST} ^(www\.)?example.com$
  # RewriteRule !^home/ home%{REQUEST_URI} [L]

  Options -Indexes

  ErrorDocument 404 /missing.html

  # compress text, html, javascript, css, xml:
  AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4.0[678] no-gzip
  BrowserMatch bMSIE !no-gzip !gzip-only-text/html

  <FilesMatch "\.(htm|html|css|js)$">
  AddDefaultCharset UTF-8
  </FilesMatch>

  RedirectMatch 404 "(?:.*)/(?:\.git|file_or_dir)(?:/.*)?$"

  # remove .html from html file names
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
  RewriteCond %{REQUEST_FILENAME}.html -f
  RewriteRule ^(.+)/$ $1.html [L]

そして Root/drupal .htaccess で

default drupal stuff

SOで見つけた最も近い答え:


編集:サブディレクトリごとに個別のgitリポジトリがあるため、与えられたアドバイスに部分的に従うことになりました。@Jon Lin と @tttony に感謝します!

新しい問題:ルートの .htaccess では、サブフォルダーにインストールされている drupal を表示できません。

  • Drupal.examples.com/Drupal**のすべての drupal ファイルを使用します
4

2 に答える 2

2

最も簡単な方法は、homeドキュメントをルートにすることであり、サブディレクトリを作成する必要はありません。

しかし、あなたがしなければならないことのために、最初にやらなければならないことは、リクエストだけでなく、すべてをルーティングすることです:/home/

RewriteEngine On
RewriteRule ^(.*)$ /home/$1 [L]

第二に、この条件:

RewriteCond %{REQUEST_FILENAME}.html -f

次のようなファイルをチェックしようとするため、末尾にスラッシュがあると常に失敗します。

/home/contact/.html

代わりにこれを試してください:

# remove .html from html file names
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_URI} ^/(.*)/$
RewriteCond %{DOCUMENT_ROOT}/home/%1.html -f
RewriteRule ^(.+)/$ $1.html [L]
于 2013-10-14T05:15:29.453 に答える