PHP:关于URL的两个基本问题

PHP:关于URL的两个基本问题,php,Php,问题1 www.example.com/?do=blah 如果没有index.php,如何让它工作?有什么例子吗 问题2 www.example.com/news.php?废话 这个链接不会显示与news.php相同的结果,但是我们不应该使用news.php&blah=value作为例子吗?绳子后面是什么?代表GET变量的缩写版本还是完全不同的东西?问题1 只要index.php是您的默认值,并且您的根文件夹中有它,那么您只需要www.domain.com/?querystring=value

问题1

www.example.com/?do=blah

如果没有index.php,如何让它工作?有什么例子吗

问题2

www.example.com/news.php?废话


这个链接不会显示与news.php相同的结果,但是我们不应该使用news.php&blah=value作为例子吗?绳子后面是什么?代表GET变量的缩写版本还是完全不同的东西?

问题1

只要
index.php
是您的默认值,并且您的根文件夹中有它,那么您只需要
www.domain.com/?querystring=value

问题2

是查询字符串参数的开头。它应该用于第一个

&
用于此后的每个查询字符串参数


index.php?querystring1=value&querystring2=value&querystring3=value
以此类推。

您可以使用
.htaccess
为这两个对象配置URL重写

RewriteEngine On
#for question 1
RewriteRule ^(.*)$ index.php/$1 [L]
#another example for question 2
RewriteRule ^news.php\?(.*)$ news.php?blah=$1 [L]
第一个示例将捕获所有内容并将用户重定向到
index.php
文件。因此,如果用户试图访问
domain.tld/abc
,他们实际上是在访问
domain.tld/index.php/abc


至于第二个示例,它将获取属于查询字符串的所有内容(可能需要更好的正则表达式)。基本上,它会将
news.php?value
转换为
news.php?blah=value
我不完全理解您的第二个问题,但第一个问题的答案是您需要在Web服务器上指定不同的默认目录索引。假设您正在运行Apache,请在httpd.conf文件中找到以下行:

DirectoryIndex index.html index.php ...etc
并将其更改为:

DirectoryIndex your_preferred_default_page.php

对于第二个问题,问号不是速记,它标记查询字符串的开头。。。它被用作提示,以将更多字符串视为GET键和值。

对于Q1,只要您的web服务器配置为将
index.php
作为目录索引,它将在PHP中自动运行,而无需
index.PHP
。对于第二季度,我们需要在
news.PHP
中查看代码,如果有人能够确定正在执行的操作,可能还需要.htaccess。您应该将这些作为单独的问题发布。@Michael;我不能提供代码,但这里有一个实例。()@kaoD;我认为这些问题是相似的,所以我一起问了。@AnılÜnal如果没有看到代码,我们就不能肯定。我猜服务器级别正在进行重写,将
?blah
映射到完整的GET参数,如
?article=blah
,实际上,“查询字符串”指
之后和
之前的所有内容。另外,对于问题2,
blah
本身可能是一条由php文件中的代码处理的路径?问题2:是的,但是querystring1没有指定任何值。(此处:)它会自动指定“true”吗?例如@IgnacioVazquez Abrams,我指的是
querystring
作为单个querystring值。没有“单个querystring值”这样的东西。这里有一个完整的查询字符串,符号和所有符号。它解决了我的第二个问题,谢谢。