Переписать htaccess дает мне 500 ошибок? - PullRequest
0 голосов
/ 14 октября 2010

У меня есть этот URL, который я хотел сделать дружественным, используя перезапись на .htacess, но он дает мне ошибку (500 внутренняя ошибка сервера), это мой оригинальный php url

http://www.example.com/viewtopic.php?topic=lovetopic

Я хочу изменить это на:

http://www.example.com/lovetopic

это весь мой код htaccess:

RewriteEngine On
RewriteRule ^user/([^/]*)$ /viewprofile.php?user=$1 [L]
RewriteRule ^([^/]*)$ /viewtopic.php?topic=$1 [L]

Я не знаю, в чем проблема

РЕДАКТИРОВАТЬ журнал ошибок сервера дает мне эту ошибку

[Thu Oct 14 20:34:36 2010] [error] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., 

1 Ответ

4 голосов
/ 14 октября 2010

Шаблон вашего второго правила ^([^/]*)$ также соответствует /viewtopic.php без префикса пути /, т.е. viewtopic.php. Вот почему у вас бесконечная рекурсия.

Вы можете использовать следующее условие, чтобы исключить это:

RewriteCond $1 !=viewtopic.php
RewriteRule ^([^/]*)$ /viewtopic.php?topic=$1 [L]

Или используйте это условие для исключения всех существующих файлов:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ /viewtopic.php?topic=$1 [L]

Или используйте это правило перед другими правилами, чтобы остановить каждый запрос, который может быть сопоставлен с существующим файлом, перезаписываемым любым из следующих правил:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
...