2016-12-06 9 views
0

На моем сервере Linux я следующий .htaccess:в Windows Apache .htaccess RewriteRule ошибка

Options FollowSymLinks 
RewriteEngine On 
RewriteRule ^page/([^-]*)/([^-]*)$ index.php?module1=page&module2=$1&$2 [L] 
RewriteRule ^page/([^-]*)$ index.php?module1=page&module2=$1 [L] 
RewriteRule ^game/([^-]*)/([^-]*)$ index.php?module1=game&module2=$1&$2 [L] 
RewriteRule ^game/([^-]*)$ index.php?module1=game&module2=$1 [L] 
RewriteRule ^admin/([^-]*)/([^-]*)$ index.php?module1=admin&module2=$1&$2 [L] 
RewriteRule ^admin/([^-]*)$ index.php?module1=admin&module2=$1 [L] 

Теперь я хочу, чтобы установить его на моих окнах 7. Я использую WebServ в качестве сервера (это построить на вершине apache2).

Если я копировать вставить эту .htaccess, то она попадает в ошибку HTTP 500

я должен комментировать опции FollowSymlinks, чтобы заставить его работать. Но переписывание все еще не работает. Я пробовал:

  • меняется все

    AllowOverride ххх на AllowOverride All в apache2/CONF/httpd.conf

  • в том же файле у меня есть:

    LoadModule rewrite_module модули/mod_rewrite.so (без комментариев)

Итак, вопросы: 1. Почему параметры FollowSymLinks заканчиваются ошибкой http 500 2. Почему переписывание не работает?

С наилучшими пожеланиями

+0

Символы не существуют в средах MS-Windows. Они представляют собой концепцию традиции unix/linux и не имеют непосредственной функции в MS-Windows. Вероятно, это означает, что этот параметр не существует на этом HTTP-сервере, если он создан специально для этой среды. – arkascha

+0

Мы не можем сказать больше, так как у нас нет доступа к вашей системе и всей информации. Вы должны отдать его нам. Это начинается с того, что _exactly_ вы на самом деле подразумеваете под «Но переписывание все еще не работает вообще»? И _please_ добавьте соответствующие части вашего файла журнала ошибок HTTP-серверов в вопрос. – arkascha

+0

«переписывание по-прежнему не работает», если я перейду в myurl/game/overview, он говорит об ошибке 404 вместо того, чтобы переписывать его в index.php? Module1 = game & module2 = $ 1 & $ 2 –

ответ

0

Отладка сложная. Отладка гораздо сложнее, если у вас недостаточно фактов. Вам нужно больше фактов. Не мнимые факты, настоящие. Чтобы получить больше реальных фактов, включите ведение журнала. При запуске Apache 2.4, see this. Сделайте что-то вроде этого:

LogLevel alert rewrite:trace3 

Go читать журнал и он расскажет вам в деталях, что делает Rewrite. Если деталей недостаточно, поднимите его до trace6. Мой опыт состоит в том, что 500-е часто (не всегда) вызваны бесконечным циклом. Удачи!

+0

В моем httpd.conf у меня есть 'LogLevel warn', если я изменю его на' LogLevel alert rewrite: trace3' мой сервер не хочет запускаться (он печатает, что LogLevel ожидает один аргумент). То, что моя версия apache равна 2.2 –

+0

Это не ответ на вопрос, не так ли? – arkascha

+0

Вы имеете в виду, что я могу обновить apache до 2.4? –