gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Как заменить хост в RewriteRule?

Вот код .htaccess

<FilesMatch "\.(jpg|png|bmp|gif|css|js)$">
  Header set Cache-Control "public, max-age=1928448000"
</FilesMatch>

<Files .htaccess>
  order allow,deny
  deny from all
</Files>

Options All -Indexes

DirectoryIndex index.html index.php

RewriteEngine on
RewriteBase /
# -- RewriteBase /backend/

# -- REDIRECT FROM WWW
# -- RewriteCond %{HTTP_HOST} ^www.assist\.loc$ [NC]
# -- RewriteRule ^(.*)$ http://assist.loc/$1 [R=301,L]

# -- DISABLE HACKING
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

# -- CGI AUTHORIZATION STUFF
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# -- IF NOT END FILE/DIRECTORY - IT IS ROUTE
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule .* index.php [L]

# -- SEO STUFF -- REMOVE INDEX.PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://assist.loc/ [R=301,L]

# -- SEO STUFF -- REMOVE INDEX.HTML
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://assist.loc/ [R=301,L]

# -- SEO STUFF -- REMOVE SLASH FROM BACK OF THE ROUTE-DIRS
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  $1 [R=301,L]


В принципе - он работает.
Но под каждый сайт приходится постоянно менять assist.loc, где-то скопировать на локальный - опять менять, где-то в интернет - снова менять. Где можно прочитать про переменные не в RewriteCond, а в самом правиле RewriteRule, чтобы один раз написать и потом просто файлик копировать?

Я пробовал удалять вообще Хост, но видимо внутренний редирект работает иначе, чем внешний, в общем не работает ничего.

Подскажет кто?
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
gzhegow
@gzhegow Автор вопроса
aka "ОбнимиБизнесмена"
Все получилось. Оказывается, у нас никто не разбирается в этом бреде. Пришлось заплатить трем фрилансерам, но один из них таки подсказал.

Выкладываю .htaccess на будущее:
<Files .htaccess>
  order allow,deny
  deny from all
</Files>

<FilesMatch "\.(jpg|png|bmp|gif|css|js)$">
  Header set Cache-Control "public, max-age=1928448000"
</FilesMatch>

RewriteBase /
RewriteEngine on
Options All -Indexes
DirectoryIndex index.html index.php

# -- SEO STUFF - REDIRECT FROM WWW
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

# -- SEO STUFF -- REMOVE SLASH FROM BACK OF THE ROUTES
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$  $1 [L,R=301]

# -- SEO STUFF -- REMOVE INDEX.HTML / INDEX.PHP
RewriteCond %{THE_REQUEST} index\.(html|php) [NC]
RewriteRule ^(.+/)?index\.(html|php)$ $1 [L,NC,R=301]

# -- DISABLE HACKING
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

# -- CGI AUTHORIZATION STUFF
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# -- IF NOT END FILE/DIRECTORY - IT IS ROUTE
RewriteCond %{REQUEST_FILENAME} !^favicon\.ico
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы