2010-10-14 2 views
0

у меня есть этот адрес, что я хотел сделать дружеский, используя перезапись на .htacess, но он дает мне ошибку (500 Внутренняя ошибка сервера), это мой PHP оригинал URLhtaccess rewrite дает мне 500 ошибок?

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] 

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

EDIT журнал ошибок сервера дает мне эту ошибку

[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., 
+0

Вы проверяете журналы? –

+0

Я помещаю то, что сообщает мне журнал ошибок сервера, спасибо :)) – getaway

+0

с тех пор, как я переписал ссылку на тему url, она дала мне эти 500 внутренних ошибок – getaway

ответ

4

Структура вашего второго правила ^([^/]*)$ это также соответствует /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] 
+0

Не следует Тег '[L]' уже предотвращает рекурсии? – Powerlord

+0

D'oh, я только что проверил ... нет, '[L]' не мешает внутренним переадресациям перерабатывать все правила на новый URL. – Powerlord

+0

@R. Bemrose: Нет, флаг [* L *] (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflags) немного отличается: «Помните, однако, что если RewriteRule генерирует внутренняя переадресация (что часто возникает при перезаписи в контексте для каждого каталога), это заново запросит запрос и вызовет повторение обработки, начиная с первого RewriteRule. » – Gumbo

Смежные вопросы