Включить short_open_tag или использовать <?php
Byte Order Mark, BOM
Если я правильно понял, то нужно убрать из папок .htaccess, а в корне должно быть так:
DirectoryIndex index.html RewriteEngine On RewriteRule ^([^/]+/)index\.html$ /$1 [R=301,L]
Свою страницу для ошибки 404 можно указать так:
ErrorDocument 404 /404.html
Если нужен именно редирект на главную:
ErrorDocument 404 http://site.ru/
Тогда так:
>[^>]+$
RewriteCond %{HTTP_HOST} ^www\.(.+\.site\.ru)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Потерялся шаблон регулярного выражения между RewriteRule и /test.html
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewriterule
RewriteRule Pattern Substitution [flags]
RewriteCond %{HTTP_REFERER} ^https?://(www\.)?(google\.com|yandex\.ru) RewriteRule ^test\.pdf$ /test.html [L]
Ставить выше правил ЧПУ.
В районе строки 38
<?php if (isset($_POST['bsearch'])) {
Открывающая фигурная скобка есть, а вот закрывающая скобка где-то потерялась.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{DOCUMENT_ROOT}/DOCS/$1 -f RewriteRule ^(.*\.xml)$ /DOCS/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
Открывались в корне это как?
При запросе /file.xml отдавать /DOCS/file.xml или как?
http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html
Сначала последовательно выполняются rewrite, описанные на уровне server.
Только потом уже начинается поиск location по URI запроса и последовательно выполняются директивы описанные в найденном location.
server { rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last; location /user/ { rewrite ^/user/([^/]*)(/?)+$ /index.php?subaction=userinfo&user=$1 last; } }
В строке /user/johnylee/ нет точек, поэтому она совпадает с шаблоном "^/([^.]+)(/?)+$".
Т.е. этот шаблон перехватит любой запрос, где нет точек.
Самое простое решение это вынести все правила с rewrite на уровень server.
rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last; rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last;
Эти два правила перенести в самый конец.
Или rewrite c уровеня server перенести в location /
location / { rewrite "^/xfsearch/([^.]*)(/?)+$" /index.php?do=xfsearch&xf=$1 last; rewrite "^/xfsearch/([^.]*)/page/([0-9]+)(/?)+$" /index.php?do=xfsearch&xf=$1&cstart=$2 last; rewrite "^/page/([0-9]+)(/?)$" /index.php?cstart=$1 last; rewrite ^/page/(.*)$ /index.php?cstart=$1 last; rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2&day=$3 last; rewrite "^/([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&day=$3&cstart=$4 last; rewrite "^/([0-9]{4})/([0-9]{2})(/?)+$" /index.php?year=$1&month=$2 last; rewrite "^/([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$" /index.php?year=$1&month=$2&cstart=$3 last; rewrite "^/([0-9]{4})(/?)+$" /index.php?year=$1 last; rewrite "^/([0-9]{4})/page/([0-9]+)(/?)+$" /index.php?year=$1&cstart=$2 last; rewrite "^/([^.]+)/page/([0-9]+)(/?)+$" /index.php?do=cat&category=$1&cstart=$2 last; rewrite "^/([^.]+)(/?)+$" /index.php?do=cat&category=$1 last;
И несколько правил для .xml перенести в location ~ \.(html|xml)
rewrite ^/user/([^/]*)/rss.xml$ /engine/rss.php?subaction=allnews&user=$1 last; rewrite ^/user/([^/]*)/news/rss.xml(/?)+$ /engine/rss.php?subaction=allnews&user=$1 last; rewrite ^/catalog/([^/]*)/rss.xml$ /engine/rss.php?catalog=$1 last;