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 в неправильном месте.
надеюсь, что это помогает другим людям, имеющим ту же проблему...:)