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 prettyurl我无法打印该值_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php prettyurl我无法打印该值

Php prettyurl我无法打印该值,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我正在尝试使用漂亮的url。但它将转到404.php 我不知道我的.htaccess有什么问题。我对这个漂亮的URL很陌生 .htaccess RewriteEngine on RewriteRule ^([0-9]+)/$ test.php?id=$1 # not a file RewriteCond %{REQUEST_FILENAME} !-f # not a directory RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .? /

我正在尝试使用漂亮的url。但它将转到404.php 我不知道我的.htaccess有什么问题。我对这个漂亮的URL很陌生

.htaccess

RewriteEngine on

RewriteRule ^([0-9]+)/$ test.php?id=$1

# not a file
RewriteCond %{REQUEST_FILENAME} !-f
# not a directory
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .? /404.php [L]
在我的test.php中

if(isset($_GET['id'])){
    $id = $_GET['id'];
    echo $id;
} 
下面是我test.php中的唯一代码

if(isset($_GET['id'])){
    $id = $_GET['id'];
    echo $id;
} 
但它不是印刷品

我像这样指向我的浏览器

http://localhost/myprojectfolder/test/1

我的项目结构

myporjectfolder
   - index.php
   - .htaccess
   - test.php

提前谢谢你。

我想你有几个问题。您指向的是
http://localhost/myprojectfolder/test/1
但您的规则中没有
/test
。你只能接受数字。另外,您没有在URL的末尾使用斜杠,但是您的规则说它应该在那里,因此也不会匹配,除非您将其设置为可选

您还将不存在的文件定向到404.php。好吧,你正在尝试做的漂亮的URL也是不存在的文件。所以这可能会引起问题

无论如何,对于这样的URL,用这种方式尝试您的规则


或者删除似乎不必要的/test文件夹


不清楚你问什么。。。如果重写按预期进行,则在内部使用
$\u GET['id']
参数调用脚本
test.php
。你可以用正常的方式使用它…但是为什么不打印1呢?那么很明显,重写没有按预期的方式工作。。。文件夹层次结构中的
.htaccess
样式文件在哪里?还要确保您没有遇到缓存问题,在浏览器中进行深度重新加载或完全禁用缓存以进行测试…该.htaccess与index.php和test.phpit一起位于myrpojectfolder内,将执行404.php“或删除看起来不必要的/test文件夹”,test不是一个文件夹,它是一个php文件,但您正在URL中使用它,因此您的规则将不匹配,除非您将其添加到重写规则中。参见我的第一个示例。您不需要在URL中进行测试,因此我给出了第二个示例。非常感谢您,它现在可以运行您的两个示例,我现在明白了,但是什么是[L]它是必要的?没问题。是的,我建议始终使用
L
,这样当规则匹配时,它将在匹配后停止处理规则。如果增加了更多的规则,冲突的可能性就会降低。我可以问一下,如果我也有像account.php、members.php、admin.php这样没有querystring的php文件,我如何在浏览器中执行它们?我试着这样做,但我找不到404。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/?$ test.php?id=$1 [L]