私のメインドメインは私のpublic_htmlフォルダに縛られていますが、私は.htaccessリダイレクトを使用して複数のサイトを簡単にホスティングできるように、ルートディレクトリをフォルダ内のサブディレクトリに変更します。例:次のように.htaccessルートディレクトリにサブディレクトリをリダイレクト
public_html
-- .htaccess
-- site1
---- .htaccess
-- site2
-- site3
ルートディレクトリにある.htaccessファイルがある:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdirectory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdirectory/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/ [L]
これは正常に動作しますが、私はこれと私のSITE1ディレクトリにある.htaccessファイルに問題があると思います。 URLを入力すると、example.com/site1にリダイレクトされることがあります。したがって、ウェブサイトはexample.comとexample.com/site1で全く同じように見えますが、example.com/site1として表示させたくありません。 site1ディレクトリ内の2番目の.htaccessファイルは、以下のとおりです。
RewriteEngine on
# Change default directory page
DirectoryIndex /home/
# Remove .php extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*)/$ $1.php [L]
# Ensure all directory URLs have a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
# Same for HTTPS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\/$
RewriteCond %{REQUEST_URI} !\/[^\/]*\.[^\/]+$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}/ [L,R=301]
# Redirect default error page to home page
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(/|error/)?$ /home/ [R=301,L]
# Error Documents
ErrorDocument 400 /error/?e=400
ErrorDocument 401 /error/?e=401
ErrorDocument 403 /error/?e=403
ErrorDocument 404 /error/?e=404
ErrorDocument 500 /error/?e=500
# Prevent viewing of htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>
私はそれが私はそれがURLに影響を与える使用していますが、それは解決することができる場合、私は任意の助けをいただければ幸いさまざまな書き換えルールの問題だかはわかりません。
ありがとうございます。私の説明があまり良くない場合はお詫び申し上げます。
返信いただきありがとうございます。変更を有効にして、example.com/homeというURLにアクセスして目的のスラッシュを省略した場合、後続のスラッシュをリダイレクトする代わりにリダイレクトが多すぎるためサイトが読み込まれません。私が含む.htaccessファイルを持つWebサイトの資産のSITE1フォルダ内のサブディレクトリを持って追加することが有益であったかもしれない: でRewriteBase/ #の許可しないディレクトリへのアクセス IndexIgnoreが* 'で 'オプション-Indexes RewriteEngineと資産フォルダに末尾のスラッシュを省略すると、ほとんどの問題が発生します。 – JakeGriffin
申し訳ありませんが、最初のブロックにスラッシュが追加されました。 –
メインディレクトリのページで動作するVasiliyに感謝します!しかし、上記の私はアクセスをブロックしている.htaccessファイルを持つアセットサブディレクトリがあります。 example.com/assets/に移動しても問題ありませんが、スラッシュを省略するとexample.com/site1/assets/にリダイレクトされます。どのように解決できますか? – JakeGriffin