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/