.htaccess mod_rewrite имеет разные результаты на разных сайтах
-
19-09-2019 - |
Вопрос
Я использую mod_rewrite для создания URL-адресов SEO.В основном это работает следующим образом:все запросы перехватываются .htaccess и перенаправляются на PHP-скрипт (скажем, Transform.php).Transform.php анализирует URL-адрес SEO и преобразует его в обычный URL-адрес, затем включает index.php, затем перехватывает выходные данные приложения (index.php) и использует RegEx для преобразования всех обычных URL-адресов в URL-адреса SEO.Поэтому жизненно важным шагом является проведение всех запросов через Transform.php.Мой .htaccess довольно длинный, однако мне удалось ограничить его следующими строками.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^index\.php?(.*)$ ./transform.php?p=$1&%{QUERY_STRING} [L]
</IfModule>
Проблема возникает с исходным (корневым) URL: http://mysite.com/.Когда я печатаю http://mysite.com/ и сайт находится на моем локальном компьютере, все работает нормально. http://mysite.com/ перехватывается .htaccess и отправляется в Transform.php для дальнейшей обработки.Однако на другом сервере эта строка не работает (скажем, для http://mysite-other-server.com/).Эта строка .htaccess просто не перехватывает запрос.Все работает нормально для http://mysite-other-server.com/index.php хотя.
Более того, у меня есть несколько сайтов на этом втором сервере, и некоторые из них работают, а некоторые нет.Это похоже на то, что для некоторых из них URL-адрес сначала разрешается http://mysite-other-server.com/index.php а затем обрабатывается .htaccess, в то время как для других URL-адрес не разрешается, а .htaccess занимается http://mysite-other-server.com/
Я очень смущен и безуспешно пытался гуглить.Любая помощь высоко ценится.
Решение
Я предполагаю, что Apache настроен не принимать файлы .htacces.
Вы должны включить его в конфигурации httpd с помощью параметра AllowOverride.
http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride
Другая возможность заключается в том, что рабочий сервер не загрузил mod_rewrite, проверьте директивы LoadModule.