ошибка mod_rewrite - PullRequest
       7

ошибка mod_rewrite

0 голосов
/ 12 января 2010

Использование этого правила перезаписи дает мне 500. Что не так с моим синтаксисом?

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^microsites/(.*)$ /microsites/index.php?uID=$1 [L]

То, что я хочу сделать, это тихо написать http://site.com/microsites/anythingatall в http://site.com/microsites/index.php?uID=anythingatall

Редактировать: следующее работает и не выдает ошибку

RewriteRule ^([0-9])$ /microsites/index.php?uID=$1 [L]

// конец редактирования

Спасибо за любой совет!

Ответы [ 3 ]

1 голос
/ 12 января 2010

Ошибка в том, что microsites/index.php также соответствует ^microsites/(.*)$. Исключите пункт назначения, и он должен работать:

RewriteCond $1 !=index.php
RewriteRule ^microsites/(.*)$ /microsites/index.php?uID=$1 [L]
1 голос
/ 12 января 2010

Попробуйте вместо этого:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /microsites/
RewriteRule ^(.*)$ /microsites/index.php?uID=$1 [L]

Это было какое-то время, но я считаю, что вам нужно убедиться, что ваша база позаботится о любых реальных именах папок, если вы не собираетесь использовать их в качестве частей значения замены.

0 голосов
/ 12 января 2010

Проверьте ваш журнал переписывания. Я думаю, что вы попали в цикл перезаписи, поскольку ^microsites/(.*)$ соответствует URL, на который вы перенаправляете (/microsites/index.php?uID=$1), поэтому он продолжает циклически повторяться, пока не будет достигнуто максимальное количество внутренних перенаправлений (по умолчанию 10)

Попробуйте это:

RewriteEngine on
RewriteBase /
RewriteRule ^microsites/([^\.\?]+)$ /microsites/index.php?uID=$1 [L]

что означает (в псевдокоде)

if we found a "microsites/" at the beginning
and there are no "." or "?" characters, store this value in $1
then redirect to /microsites/index.php?uID=$1

так что во второй раз он увидит, что вы уже сделали перенаправление и не зациклились навсегда

...