wamp local поддоменов и htaccess переписать правила

Я недавно исправил свой сайт с немного магии php mvc, для которой я использую эти настройки в моем.htaccess:

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, имея абсолютные пути, исправил эту проблему, но не очень хорошо работал с локальным тестовым сервером и удаленным живым сервером и сервером разработки после того, как был нет "имя проекта" - папка

Я решил настроить свой локальный сервер wamp, чтобы я мог получить доступ к своему другому проекту в качестве субдомена для моего локального хоста, например, " http://projectname.localhost/".

я активировал соответствующие модули 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'];. это не устанавливается должным образом, но зная, что это еще не помогло мне решить эту проблему.

Может ли кто-нибудь указать мне правильное направление или предложить другую конфигурацию среды, которая делает возможным тестирование в таких условиях?

1 ответ

Решение

Изменив мой.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 в неправильном месте.

надеюсь, что это помогает другим людям, имеющим ту же проблему...:)

Другие вопросы по тегам