Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用.htaccess在url中添加页面名称_Php_.htaccess - Fatal编程技术网

Php 使用.htaccess在url中添加页面名称

Php 使用.htaccess在url中添加页面名称,php,.htaccess,Php,.htaccess,我刚刚开始。htaccess,所以我不知道太多关于它,我试图谷歌它,但失败了,所以我在这里张贴我的问题,我很抱歉,如果这个问题是愚蠢的为你。我的问题是。 我在.htaccess页面中使用此代码: RewriteEngine On RewriteBase /learn/php/htaccess/ RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2 当我输入此url时: http://localhost/learn/php/htaccess/page/n

我刚刚开始。htaccess,所以我不知道太多关于它,我试图谷歌它,但失败了,所以我在这里张贴我的问题,我很抱歉,如果这个问题是愚蠢的为你。我的问题是。 我在.htaccess页面中使用此代码:

RewriteEngine On
RewriteBase /learn/php/htaccess/
RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2
当我输入此url时:

http://localhost/learn/php/htaccess/page/number
它很好用。但是我还想在url中添加index.php(页面名称)。我试过这个:

http://localhost/learn/php/htaccess/index.php/page/number

但失败了。我该怎么做? 我只是想这样做,如果我添加了另一个页面,那么我不确定,但我必须使用以下代码:

RewriteEngine On
RewriteBase /learn/php/htaccess/
RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2
RewriteRule ^(.*)/(.*)$ another.php?x=$1&y=$2
但是我如何用这种格式打开另一个.php页面呢?
谢谢

尝试在规则中添加一些条件:

RewriteEngine On
RewriteBase /learn/php/htaccess/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?n=$1&p=$2
至于路由到另一个页面,您需要区分这两个路由之间的差异。例如,给定一个url:

http://localhost/learn/php/htaccess/foo/bar
它应该路由到哪里

index.php?n=foo&p=bar

?


htaccess对内容一无所知,只知道URL和与之匹配的正则表达式模式,因此,除非您区分两者,否则无法将同一内容路由到两个不同的脚本。

您只需这样做即可

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?data=$1 [QSA]
在index.php中,您可以放置以下代码

   $data = explode("/",$_GET['data']);
   $page = $data[0];
   $number = $data[1];

您将需要定义另一个规则(或更改正则表达式)来计算文件名。@Mubashar如果您想让index.php处理路径信息,那么这不是由htaccess来处理的,您必须为index.php编写脚本,以检查
PATH\u INFO
服务器变量,解析出
页面/编号
,并正确返回脚本
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?data=$1 [QSA]
   $data = explode("/",$_GET['data']);
   $page = $data[0];
   $number = $data[1];