Как я могу написать .htaccess, который будет переписывать по-разному в зависимости от URL-адреса запроса? - PullRequest
0 голосов
/ 08 октября 2009

Я хотел бы иметь один файл .htaccess, который можно корректно переписать как в моей среде разработки на локальном хосте, так и на моем размещенном производственном сайте. Сейчас я должен хранить две отдельные копии файлов для каждого сайта, над которым я работаю. Я хотел бы иметь возможность синхронизировать два сайта, не удаляя ни один из их файлов .htaccess.

Ниже приведен файл .htaccess, который я использую с небольшим псевдокодом в комментариях, чтобы продемонстрировать, что я хочу сделать.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond $1 !^(index\.php|images|robots\.txt|css)

## IF the url looks like its from localhost then use this rule
  ## The incoming url might look like: http://localhost/mysite/about
    RewriteRule ^(.*)$ /mysite/index.php/$1 [L]
## Else do this rewrite
  ## The incoming url might look like: http://www.mysite.com/about
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

Вот мои настройки сервера:

Разработка : xampp на windows

Производство : Dreamhost

Ответы [ 3 ]

1 голос
/ 08 октября 2009

Я немного заржавел, но думаю:

RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]

#Do your live stuff here

RewriteCond %{HTTP_HOST} ^localhost$ [NC]

#Do your local stuff here
0 голосов
/ 08 октября 2009

Я бы просто использовал отдельный виртуальный хост для вашей среды разработки с теми же настройками, что и на вашем производственном сервере.

Просто добавьте еще один <VirtualHost> контейнер в файл конфигурации httpd.conf или httpd-vhosts.conf и настройте параметры:

<VirtualHost *:80>
    ServerName example.com.local
    DocumentRoot /absolute/filesystem/path/to/your/localhost/mysite
</VirtualHost>
0 голосов
/ 08 октября 2009

Используйте RewriteCond для проверки% {HTTP_HOST}. например:

RewriteCond %{REMOTE_HOST}  ^localhost$
...