Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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-如果目录不';不存在_Php_.htaccess_Routing_Require - Fatal编程技术网

Php .htaccess-如果目录不';不存在

Php .htaccess-如果目录不';不存在,php,.htaccess,routing,require,Php,.htaccess,Routing,Require,我想要一个带有get参数的PHP文件,当且仅当有人请求一个没有任何扩展名的URL,如.PHP和.html等(即目录),并且该目录也不存在时 例如: example.com/xyz 现在服务器上没有xyz目录。htaccess需要一个带有get参数的php文件-myfile.php?url=xyz从这个代码段开始 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f

我想要一个带有get参数的PHP文件,当且仅当有人请求一个没有任何扩展名的URL,如.PHP和.html等(即目录),并且该目录也不存在时

例如:
example.com/xyz

现在服务器上没有
xyz
目录。htaccess需要一个带有get参数的php文件-
myfile.php?url=xyz

从这个代码段开始

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ myfile.php?url=$1 [PT,L]
    ErrorDocument 404 /myfile.php
</IfModule>

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$myfile.php?url=$1[PT,L]
ErrorDocument 404/myfile.php
但是如果我请求xyz?id=1,它仍然只发送xyz。有没有办法去 发送整个字符串,无论字符串是什么

正如您提到的,如果您请求
example.com/xyz
example.com/xyz?id=1
,则需要获取所有参数。然后用这个。请注意
QSA
标志。这将附加请求的查询字符串。我想这就是你想要的答案

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /myfile.php?url=$1 [QSA,L]
所以如果您请求这个
example.com/xyz?id=1&h=2

你的PHP
print\r($\u-GET)输出将如下所示

Array ( [url] => xyz [id] => 1 [h] => 2 )

非常感谢:)它起作用了。。但是如果我请求
xyz?id=1
它仍然只发送
xyz
。不管字符串是什么,有没有办法发送整个字符串?您必须编写(或查找)url解析器函数。您只能使用.htaccess获取参数。。。这里的xyz不是参数,此文件名或查询字符串的一部分。。。谷歌这个“php url解析器”好的,谢谢:):D谢谢你的回答。:)太棒了,谢谢。。一个字改变了整个程序:)可能重复的