1

私は最近、.htaccessでこれらの設定を使用する少しアップしたphpmvcマジックでサイトを修正しました。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9]*)/?([a-zA-Z0-9]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&arg=$3 [NC,L]

それは魅力のように機能しました。私が遭遇した唯一の問題は、cssや画像などのファイルを比較的参照するときに、URL localhost / projectname / controllername / action/idのダッシュが原因でフォルダー構造を下に移動したとブラウザーが想定したことでした。

そのため、css/styles.cssはlocalhost/controllername / action / id / css / styles.cssでリクエストされ、絶対パスを使用してその問題を修正しましたが、ローカルテストサーバーとリモートのライブおよび開発サーバーを使用した後はうまく機能しませんでした。 「プロジェクト名」なし-フォルダ

「 http://projectname.localhost 」のように、ローカルホストのサブドメインとして別のプロジェクトにアクセスできるように、ローカルのWampサーバーを構成することにしました。

関連するApacheモジュールをアクティブ化し、hostsファイルを編集し、httpd-vhosts.confを次のように変更しました。

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName localhost.com
    ServerAlias www.localhost.com
    DocumentRoot "C:\wamp\www"
    ErrorLog "logs\errors.log"
    <directory "C:\wamp\www">
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from all
    </directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName localhost.com
    ServerAlias *.localhost.com
    VirtualDocumentRoot "C:\wamp\www\subdomains\%1"
    ErrorLog "logs\errors.log"
    <directory "C:\wamp\www\subdomains\%1">
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from all
    </directory>
</VirtualHost>

今、projectname.localhost.com / controllername / action / idを呼び出すと、要求されたURL/subdomains/projectname/index.phpがこのサーバーで見つかりませんでした。projectname.localhost.com/index.phpはまだ正しいファイルを提供してくれます。

$_SERVER['DOCUMENT_ROOT'];に問題がある可能性があると聞きました。それは正しく設定されていませんが、それを知っていてもまだその問題を解決するのに役立っていません。

誰かが私を正しい方向に向けたり、そのような状況でのテストを可能にする別の環境構成を提案したりできますか?

4

1 に答える 1

2

私の.htaccessをに変更する

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9]*)/?([a-zA-Z0-9]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&arg=$3 [NC,L]

その問題を解決しました。マジックラインはRewriteBase /

サーバーが間違った場所で index.php を実際に探していたようです。

これが同じ問題を抱えている他の人に役立つことを願っています... :)

于 2013-02-05T07:22:22.453 に答える