Ошибка перезаписи .htaccess на POST - PullRequest
0 голосов
/ 07 мая 2011

У меня установлен сайт Drupal в подпапке "blog /".
Это было в корне несколько месяцев назад, поэтому мне пришлось создать правило перезаписи, чтобы перенаправить старый URL-адрес на новый путь.
Это работает нормально, за исключением того, что оно не работает для редактирования узла. Когда я обновляю контент (метод POST), я всегда получаю страницу 404 на главном сайте (ту, что находится в корневой папке).
Это мои правила в корне .htaccess

RewriteRule ^content/(.*)$ http://www\.mysite\.com/blog/content/$1 [R=301,L]
RewriteRule ^page/(.*)$ http://www\.mysite\.com/blog/page/$1 [R=301,L]
RewriteRule ^sites/(.*)$ http://www\.mysite\.com/blog/sites/$1 [R=301,L]
RewriteRule ^node/(.*)$ http://www\.mysite\.com/blog/node/$1 [R=301,L]
RewriteRule ^blog/(.*)$ http://www\.mysite\.com/blog/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301]

и это те, которые находятся в подпапке .htaccess

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]

Не думаю, что это что-то связанное с самим Drupal, но что-то не так в RewriteRule.
Может кто-нибудь дать мне совет?

1 Ответ

0 голосов
/ 07 мая 2011

Используя полные http: // URL-адреса и R=301, вы говорите серверу отправлять заголовки перенаправления в браузер вместо внутренней перезаписи.Переменные POST не будут повторно отправлены на новое место.

Если вы хотите, чтобы переменные POST проходили, вам нужно выполнить внутреннюю перезапись (при условии, что цель перезаписи находится на том же сервере, что и ваш файл .htaccess).Тем не менее, они не изменят URL в панели браузера - не уверены, что это именно то, что вы хотите.

RewriteRule ^page/(.*)$ /blog/page/$1 [QSA,L]
...