私のローカルマシンでは、以下が完璧に機能します。
<VirtualHost *:80>
##ServerAdmin [email protected]
DocumentRoot "C:/xampp/htdocs/website_1"
ServerName testpage.com/website_1
##ServerAlias www.recruitement.localhost
##ErrorLog "logs/dummy-Host2.localhost-error.log"
##CustomLog "logs/dummy-Host2.localhost-access.log" combined
</VirtualHost>
Howerver Imは私のウェブサイトをjusthost.comというホスティング会社にホストしていますが、それらは私が変更することを許可していませんhttpd-vhosts.confまたはhttpd.conf 。これで、サイト全体がコーディングされ、website_1の下のファイルがwebsite_1の下の他のファイルを参照するように、単純なスラッシュ「/」を使用して、website_1がドキュメントルートとして扱われるようになりました。これはローカルマシンで完全に機能しますが、ホストにアップロードすると、public_htmlでファイルを見つけようとしているため、ファイルが見つからないため、サーバーエラーが発生します。
例えば:
public_html
- website_1
- script.php
- style.css
私の内部script.php:
<a href="/style.css">See My Style</a>
これはローカルマシンでは正常に機能しますが、ホストではpublic_html/website_1ではなくpublic_htmlの下でstyle.cssを見つけようとするため失敗します
VHostsを使用せずに複数のドキュメントルートを持つ方法はありますか? .htaccessなどを使用するようなものです。約1万行のコードなので、コードの書き直しは極力避けたいと思います。
httpd.conf
を介してmod_rewriteと.htaccessを有効にしてから、このコードを.htaccess
ディレクトリの下のDOCUMENT_ROOT
に配置します。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -l
RewriteRule (?!^website_1/)^(.*)$ /website_1/$1 [R=302,L,NC]
正常に機能していることを確認したら、R=302
をR=301
に置き換えます。 mod_rewriteルールのテスト中は、R=301
(永続的なリダイレクト)の使用を避けてください。
.htaccessにエントリを作成します。あなたがウェブサイトabc.comを持っているとしましょう。ディレクトリで別のWebサイトを実行したいとします。次に、abc.comを指す親ディレクトリに.htaccessを作成します
RewriteEngine on
RewriteCond %{HTTP_Host} ^abc.com$ [NC,OR]
RewriteCond %{HTTP_Host} ^www.abc.com$
RewriteCond %{REQUEST_URI} !subdirectory/
RewriteRule (.*) /subdirectory/$1 [L]
すべての画像リクエストをrootに書き換えることが解決策になる可能性があります。ルートディレクトリにある1つの.htaccessファイルでこれを試すことができます。
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
# Check if request is for an image at root. Add/remove file types if necessary.
RewriteCond %{REQUEST_URI} ^/([^.]+)\.(png|jpg|gif|css) [NC]
RewriteCond %{REQUEST_URI} !/website_1 [NC]
# Rewrite request to point to "website_1" directory
RewriteRule .* /website_1/%1.%2 [L,NC]