301 редирект в.htaccess вызывает ошибку сервера 500 (перенаправление на не-URL)

есть такая ошибка.

при добавлении Redirect 301 правила как:

Redirect 301 "/page1.html" "/dir1/"

мой сайт терпит неудачу с ошибкой сервера 500, и в журнале ошибок apache эта ошибка появляется:

[Wed Mar 16 11:08:52 2011] [alert] [client 127.0.0.1] /home/htdocs/site.com/www/.htaccess: Redirect to non-URL

Mod rewrite установлен, также пытался предоставить URL-адреса без кавычек.

на производственном сервере это .htaccess работает нормально, но на локальных причинах неприятностей

любые идеи, пожалуйста)


Это правило работает

Redirect 301 "/page1.html" "http://www.site.com/dir1/"

но мне нужен способ поставить относительные пути вместо полного URL-адреса (сервер работает)

3 ответов


изменить все Redirect 301 правила:

RewriteRule ^/page1.html$ /dir1/page.html [R=301,L]

теперь работает. Но как это работает на производстве?


для меня у меня была точно такая же проблема. Добавление "http://domain.com "перед" /mypage " работал; я все еще тестирую, чтобы заставить его работать без, как это делает на моем производственном сервере. Так мой .htaccess в моей локальной среде тестирования, пошел так:

сломанный: Редирект 301 /моя страница /что каталоги directory1/подкаталог/моя страница/

исправлено: Перенаправление 301 http://mydomain.com/mypage http://mydomain.com/directory1/sub-directory/mypage/


у меня была такая же проблема, для меня это не сработало:

RewriteRule ^/page1.html$ /dir1/page.html [R=301,L]

то, что сработало для меня, - это удалить ведущий Слэш, и добавить мягкий хвост Слэш с ? вот так:

RewriteRule ^(page1.html)/?$ dir1/page.html [R=301,L]