Maison développement back-end tutoriel php APACHE的AcceptPathInfo指令使用介绍_php技巧

APACHE的AcceptPathInfo指令使用介绍_php技巧

May 17, 2016 am 09:07 AM
指令

学习zfdemo的时候提到设置 AcceptPathInfo 指令.

有时我们在做虚拟静态化或者让路径看起来很漂亮的时候,可能会看到http://www.example.com/index.php/html1这样URL地址,而在访问的实际是根目录下的index.php文件,而把/html1做为PATH_INFO环境变量传递给脚本。而对于apache来说上面的地址能否正确运行取决于AcceptPathInfo指令的配置

AcceptPathInfo 指令

说明 是否接受附带多余路径名信息的请求
语法 AcceptPathInfo On|Off|Default
默认值 AcceptPathInfo Default
作用域 server config, virtual host, directory, .htaccess
覆盖项 FileInfo
状态 核心(C)
模块 core
兼容性 仅在 Apache 2.0.30 及以后的版本中可用

此指令决定是否接受在实际文件名(或实际目录中一个不存在的文件)后跟随多余路径名信息的请求。这个多余的路径名信息可以当作PATH_INFO环境变量传递给脚本。

比如说,假设/test/所指向的目录下只包括一个文件:here.html ,那么对/test/here.html/more和/test/nothere.html/more的请求都会将PATH_INFO环境变量设为"/more"。

AcceptPathInfo指令的取值范围:

Off
仅当一个请求映射到一个真实存在的路径时,才会被接受。这样,如上述/test/here.html/more这样在真实文件名后跟随一个路径名的请求将会返回一个"404 NOT FOUND"错误。
On
只要前导路径可以映射到一个真实存在的文件,就可以接受该请求。这样,只要上述/test/here.html能够映射到一个有效的文件,那么对/test/here.html/more的请求就会被接收。
Default
是否接收附带多余路径名信息的请求由其对应的处理器来决定。对应普通文本的核心处理器默认会拒绝PATH_INFO 。而用于伺服脚本的处理器,比如cgi-script和isapi-isa,默认会接受PATH_INFO 。
AcceptPathInfo指令存在的首要目的就是允许您覆盖处理器关于是否接受PATH_INFO的默认设置。这种覆盖是很必要的。比如说,当您使用了类似INCLUDES这样的过滤器来根据PATH_INFO产生内容时。核心处理器通常会拒绝这样的请求,而您就可以用下述的配置使这样的脚本成为可能:

Options +Includes
SetOutputFilter INCLUDES
AcceptPathInfo On

apache 2.0以上中的默认的是没有acceptpathinfo

从APACH2.0.30以上服务器中去掉了acceptpathinfo;如果需要的话需要在http.conf中添加AcceptPathInfo On这一条。即原来的

Options FollowSymLinks includes
AllowOverride None
改成
Options FollowSymLinks includes
AllowOverride None
 AcceptPathInfo On

此指令决定了是否接受包含在某确定文件(或是某现有目录的一个不存在的文件)后附加的路径信息。此路径信息将在脚本里以PATH_INFO环境变量的形式出现。
比如说,假设/test/所指向的目录下只包括一个文件:here.html。那么对/test/here.html/more和/test/nothere.html/more的请求都会得到/more这样的PATH_INFO变量。
AcceptPathInfo指令的三个参数为:
off
仅当一个请求映射到一个真实存在的路径时,它才会被接受。这样,如上述/test/here.html/more这样的在真实文件名后跟随一个路径名的请求将会返回一个404 NOT FOUND错误。
on
如果前面的路径映射到一个真实存在的文件,此请求将被接受。如果/test/here.html映射着一个有效的文件,上例中/test/here.html/more这个请求就会被接受。
default
对于附加路径名的请求的处理方式由其对应的处理器来决定。对应普通文本的核心处理器默认会拒绝PATH_INFO。而用于伺服脚本的处理器,比如cgi-script和isapi-isa,默认会接受PATH_INFO。

PHP中的全局变量$_SERVER['PATH_INFO']是一个很有用的参数,众多的CMS系统在美化自己的URL的时候,都用到了这个参数。

对于下面这个网址:
http://www.test.com/index.php/foo/bar.html?c=index&m=search
我们可以得到 $_SERVER['PATH_INFO'] = ‘/foo/bar.html',而此时 $_SERVER['QUERY_STRING'] = 'c=index&m=search';
通常,我们最初开始PHP程序编写的时候,都会使用诸如: http://www.test.com/index.php?c=search&m=main 这样的URL,这种URL不仅看起来非常奇怪,而且对于搜索引擎也是非常不友好的。很多搜索引擎收录的时候,都会忽略Query String之后的内容,google虽然不会忽略Query String,但是对于其他不含Query String的页面,会给于比较高的PR值。

下面是一段解析PATH_INFO的非常简单的代码:

复制代码 代码如下:

if( !isset( $_SERVER['PATH_INFO'] ) ){
$pathinfo = 'default';
}else{
$pathinfo = explode('/', $_SERVER['PATH_INFO']);
}
if( is_array($pathinfo) AND !empty($pathinfo) ){
$page = $pathinfo[1];
}else{
$page = 'a.php';
}
require "$page.php";
?>


php文件名后加斜线“/”不能正常访问,报not found错误
系统坏后,重装系统后,配置php环境。用的软件和以前的版本都相同。

环境配置好后,因工作项目都是单入口文件,index.php文件后边加了斜线才能进入。没换系统前都可以访问,可以排除软件版本问题.

刚想进入工作项目,就报not found 不知为何。测试后得知,php文件名后加斜线“/”不能正常访问

询问多人,未果。google 度娘 未果

找公司一资深php工程师
说是apache有这样一个指令 :AcceptPathInfo

在apache的配置文件里面加上:AcceptPathInfo on 就ok了。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir des objets à l'aide de commandes dans Terraria ? -Comment collecter des objets dans Terraria ? Comment obtenir des objets à l'aide de commandes dans Terraria ? -Comment collecter des objets dans Terraria ? Mar 19, 2024 am 08:13 AM

Comment obtenir des objets à l'aide de commandes dans Terraria ? 1. Quelle est la commande pour donner des objets dans Terraria ? Dans le jeu Terraria, donner des commandes à des objets est une fonction très pratique. Grâce à cette commande, les joueurs peuvent obtenir directement les objets dont ils ont besoin sans avoir à combattre des monstres ou à se téléporter vers un certain endroit. Cela peut grandement faire gagner du temps, améliorer l’efficacité du jeu et permettre aux joueurs de se concentrer davantage sur l’exploration et la construction du monde. Dans l’ensemble, cette fonctionnalité rend l’expérience de jeu plus fluide et plus agréable. 2. Comment utiliser Terraria pour donner des commandes d'objets 1. Ouvrez le jeu et entrez dans l'interface du jeu. 2. Appuyez sur la touche "Entrée" du clavier pour ouvrir la fenêtre de discussion. 3. Entrez le format de commande dans la fenêtre de discussion : "/give[player name][item ID][itemQuantity]".

Démarrage rapide de VUE3 : utiliser les instructions de Vue.js pour changer d'onglet Démarrage rapide de VUE3 : utiliser les instructions de Vue.js pour changer d'onglet Jun 15, 2023 pm 11:45 PM

Cet article vise à aider les débutants à démarrer rapidement avec Vue.js3 et à obtenir un simple effet de changement d'onglet. Vue.js est un framework JavaScript populaire qui peut être utilisé pour créer des composants réutilisables, gérer facilement l'état de votre application et gérer les interactions de l'interface utilisateur. Vue.js3 est la dernière version du framework Par rapport aux versions précédentes, il a subi des changements majeurs, mais les principes de base n'ont pas changé. Dans cet article, nous utiliserons les instructions de Vue.js pour implémenter l'effet de changement d'onglet, dans le but de familiariser les lecteurs avec Vue.js.

Explorez les possibilités infinies de la méthode de saisie fournie avec les commandes MC (un outil innovant pour créer une expérience de jeu parfaite - la méthode de saisie fournie avec les commandes MC) Explorez les possibilités infinies de la méthode de saisie fournie avec les commandes MC (un outil innovant pour créer une expérience de jeu parfaite - la méthode de saisie fournie avec les commandes MC) May 02, 2024 pm 03:01 PM

Les appareils mobiles sont devenus un élément essentiel de la vie des gens dans la société moderne. Les jeux sont également devenus l’une des principales formes de divertissement pendant le temps libre. Des personnes travaillent constamment au développement de nouveaux outils et technologies pour optimiser le gameplay et améliorer l’expérience de jeu. La méthode de saisie avec sa propre commande MC est l'une des innovations les plus marquantes. Et comment cela peut apporter une meilleure expérience de jeu aux joueurs. Cet article approfondira les possibilités infinies de la méthode de saisie de commande MC intégrée. Introduction à la méthode de saisie de commande MC intégrée La méthode de saisie de commande MC intégrée est un outil innovant qui combine les fonctions des commandes MC et des méthodes de saisie intelligentes. Cela permet plus d'opérations et de fonctions. En installant la méthode de saisie sur un appareil mobile, les joueurs peuvent facilement utiliser diverses commandes dans le jeu. Entrez rapidement les commandes pour améliorer l'efficacité du jeu

Quelles sont les deux parties d'instructions qu'un ordinateur peut exécuter directement ? Quelles sont les deux parties d'instructions qu'un ordinateur peut exécuter directement ? Dec 09, 2020 am 09:15 AM

Les instructions que l'ordinateur peut exécuter directement comprennent des codes d'opération et des opérandes. L'opcode fait référence à la partie de l'instruction ou au champ spécifié dans le programme informatique pour effectuer l'opération. Il s'agit en fait du numéro de séquence d'instruction, qui est utilisé pour indiquer au processeur quelle instruction doit être exécutée.

Une instruction est une commande qui contrôle l'exécution d'un ordinateur. Elle se compose de quoi et d'un code d'adresse. Une instruction est une commande qui contrôle l'exécution d'un ordinateur. Elle se compose de quoi et d'un code d'adresse. Jan 11, 2021 am 11:43 AM

Les instructions sont des commandes qui contrôlent l’exécution de l’ordinateur et se composent de codes d’opération et de codes d’adresse. Habituellement, une instruction comprend deux aspects : le code d'opération et l'opérande (code d'adresse). Le code d'opération détermine l'opération à réaliser, et l'opérande fait référence aux données participant à l'opération et à l'adresse de l'unité où elle se trouve.

L'invite n'est plus nécessaire, vous pouvez jouer au système de dialogue multimodal avec juste vos mains, iChat est là ! L'invite n'est plus nécessaire, vous pouvez jouer au système de dialogue multimodal avec juste vos mains, iChat est là ! May 15, 2023 pm 05:55 PM

Xi Xiaoyao Technology a déclaré que l'auteur original | IQ est tombé au sol. Récemment, de nombreuses équipes ont recréé sur la base du ChatGPT convivial, et beaucoup d'entre elles ont des résultats relativement accrocheurs. Le travail d'InternChat met l'accent sur la convivialité en interagissant avec le chatbot au-delà du langage (curseurs et gestes) pour les tâches multimodales. Le nom d'InternChat est également intéressant. Il signifie interaction, non verbal et chatbots. Il peut être appelé iChat. Contrairement aux systèmes interactifs existants qui s'appuient sur un langage pur, iChat améliore considérablement l'efficacité de la communication entre les utilisateurs et les chatbots en ajoutant des instructions de pointage. De plus, l'auteur a également

Quelles sont les consignes pour éviter les événements bouillonnants ? Quelles sont les consignes pour éviter les événements bouillonnants ? Nov 21, 2023 pm 04:14 PM

Les instructions pour empêcher les événements bouillonnants incluent stopPropagation(), l'attribut CancelBubble, event.stopPropagation(), l'attribut event.cancelBubble, event.stopImmediatePropagation(), etc. Introduction détaillée : 1. stopPropagation() est l'une des instructions les plus couramment utilisées, pour arrêter la propagation des événements. Lorsqu'un événement est déclenché, l'appel de cette méthode peut empêcher l'événement de continuer, etc.

Résoudre l'erreur Vue : impossible d'utiliser correctement la directive v-bind pour lier les propriétés Résoudre l'erreur Vue : impossible d'utiliser correctement la directive v-bind pour lier les propriétés Aug 25, 2023 pm 02:35 PM

Résoudre l'erreur Vue : impossible d'utiliser correctement l'instruction v-bind pour lier des propriétés. Lors du développement avec Vue, nous rencontrons souvent des erreurs lors de l'utilisation de l'instruction v-bind pour lier des propriétés. Ce type d'erreur peut empêcher notre application de fonctionner correctement ou de s'afficher incorrectement, il est donc très important pour nous de la résoudre rapidement. Ci-dessous, nous aborderons certaines des causes possibles de cette erreur et comment les corriger. Erreur : La propriété d'objet liée à l'aide de la directive v-bind n'existe pas. Lors de l'utilisation de v-bind pour lier des propriétés,

See all articles