Вопрос

Я использую 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top