mod_rewrite 'добавить пост-информацию о пути:'

Почему мой mod_rewrite делает это?

add path info postfix: /home/mobelluk/public_html/about.php -> /home/mobelluk/public_html/about.php/

что приводит к нежелательному трейлингу на ВСЕХ.

Я отключил все мои правила.htaccess, чтобы они вышли из уравнения.

4 ответа

Решение

Возможно ли, что новый сервер загружен mod_dir, с DirectorySlash On где старого нет и что приводит к этой проблеме?

(Обратите внимание, что DirectorySlash On по умолчанию, если mod_dir загружен и ничего не переопределяет)

Очевидно, в некоторых случаях возникла проблема с повторным добавлением части post-fix для mod_rewrite https://issues.apache.org/bugzilla/show_bug.cgi?id=38642

Эта проблема:

Если несколько RewriteRules в файле.htaccess совпадают, нежелательные копии PATH_INFO могут накапливаться в конце URI.

Если вы используете Apache 2.2.12 или более позднюю версию, вы можете использовать флаг DPI для предотвращения этого http://httpd.apache.org/docs/2.2/rewrite/flags.html

При поиске "добавить постфиксный путь информации", этот вопрос возникает первым, и, хотя он в конечном итоге решил мою проблему, мне потребовалось почти 2 часа, чтобы понять, что происходит. При работе над сайтом мне нужно было это переписать:

/resources/band/ -> resources.html?section=band

Достигается с этим mod_rewrite:

RewriteRule ^resources/(.*)/$ resources.html?section=$1 [L]

Изменение этого значения на [DPI] ничего не дало... Код на моей странице resources.html был точно вызван на 100%, но аргумент section = band ему не отправлялся.

Получите это... в случае, если вы не можете прочитать документацию Apache, проблема с Multiviews. Когда браузер видит, что множественные просмотры на сервере, видит / resources / band / и говорит: "О, я такой умный, я знаю, что это значит!" и перенаправляет:

/resources/band/ -> /resources.html/band/

Правдивая история! Я изменил +Multiviews на -Multiviews на виртуальном хосте - проблема мгновенно решена.

Я решил эту проблему, отключив MultiViews в конфигурации параметров моего виртуального хоста. Я переписывал что-то похожее на ниже:

Желаемый переписать:

/dir/ -> /dir.html

Актуальные переводы:

/dir/ -> /dir.html (MultiViews)
/dir.html -> /dir.html/ (mod_rewrite: 404, didn't exist)

Отключение MultiViews препятствовало первоначальному переводу. Я мог бы, возможно, скорректировать правило перезаписи, чтобы компенсировать это, но я все равно не использовал MultiViews для чего-либо еще.

Следующий пост предупредил меня об этой проблеме: https://velenux.wordpress.com/2012/07/17/apache-mod_rewrite-multiple-add-path-info-postfix/

Другие вопросы по тегам